このtime
コマンドを使用すると、特定のジョブのCPU時間を推定できます。ただし、出力には子プロセスで費やされた時間が含まれているようです。親プロセスで費やされた時間だけを取得する方法はありますか?
ベストアンサー1
ルサッハを入手(2)OfferRUSAGE_SELF
またはRUSAGE_CHILDREN
;シェルを呼び出すと、プロセスRUSAGE_CHILDREN
とその子孫を含むプロセスのみを使用できます。したがって、Stéphane Chazelasが指摘したように、あなたのプロセスを呼び出す必要があります。getrusage(RUSAGE_SELF, &usage)
自分の中から、プロセスを編集できない場合は、LD_PRELOAD
いくつかのトリックで編集する必要があります。
もう1つのオプションは、ここでDTraceまたはSystemTapタイプのカーネルプロファイリングツールを使用して、次のレポートにプロセスの終了時に使用量を報告することです。みんなプロセス終了値:
probe kprocess.exit {
printf("%s[%d]: %s\n %s\n %s\n\n",
execname(), pid(), cmdline_str(),
task_time_string(),
proc_mem_string()
);
}
SystemTapを使用して、特定のPIDまたは実行可能ファイル名を適切なコードで分析することもできます。
probe kprocess.exit {
if (pid() != target()) next;
printf("%s[%d]: %s\n", execname(), pid(), task_time_string());
}
信号などによってプロセスが終了したときに何が起こるかを確認するには、追加のテストが必要になる場合があります。