プロセスがそれ自体で費やす時間を学ぶ

プロセスがそれ自体で費やす時間を学ぶ

この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());
}

信号などによってプロセスが終了したときに何が起こるかを確認するには、追加のテストが必要になる場合があります。

おすすめ記事