ユーザーモードまたはカーネルモードでプロセスが費やした時間を見つける方法

ユーザーモードまたはカーネルモードでプロセスが費やした時間を見つける方法

cat /proc/pid/statに関するドキュメントを読みましたが、多くの数字が表示されます。私が計算しているプロセスが無限ループで実行されています。だから価値観は変わり続けます。私はutimeとstimeというものがあるのを見ましたが、
実行中のプロセスの正確なユーザー時間とカーネル時間を提供するかどうかはわかりません。
utimeとstimeに対応する数値を手動で決定する代わりに、出力からこれら2つの数値を抽出する方法はありますか?

ベストアンサー1

はい、これらのフィールドは実行中のプロセスの正確なユーザー時間とカーネル時間を提供します。man 5 procそれらを次のように描く

このプロセスがユーザーモードでスケジュールされた時間(クロックサイクル sysconf(_SC_CLK_TCK))。これには、guest_timeフィールドを認識しないアプリケーションが計算でこの時間を失わないようにguest_time(仮想CPUを実行するのにかかる時間、以下を参照)が含まれます。

そして

このプロセスがカーネルモードで予約された時間(クロックサイクル sysconf(_SC_CLK_TCK))。

それぞれ。 (訪問者時間は43番フィールドです。)

フィールドベースのツールを使用して抽出できます。例えば

awk '{print $14, $15}' /proc/$$/stat

おすすめ記事