6

さて、私が持っているプログラミングの割り当てについては (はい、私たちは皆、ヘルプに適していると思われる情報源に目を向けることができます)、プロセスがブロック/スリープ/実行にどれだけの時間を費やしているかを調べなければなりません。

私の最初の試みは、次のような bash スクリプトを作成することでした。

for i in `ls /proc/ | egrep [0-9]+`
do
        cat /proc/$i/status | grep State
done

しかし、その後、すべての問題がスリープ状態を報告しています。さらに、この方法では狂ったようにポーリングする必要があります...したがって、テストを実行すると結果が変わる可能性があります... (うーん)

現在、syscalls を使用して Linux の新しいバージョンをコンパイルするか、プロセスの状態を追跡し続ける方法は問題外ではありません。私の唯一の心配は、変化するプロセス状態を追跡し、何も見逃さないようにする方法を見つけようとすることです...

4

2 に答える 2

0

「時間」を使用できます

 $ time ls /usr/bin

 real    0m4.756s
 user    0m0.051s
 sys     0m0.078s

real - sys = I/O (スリープ/ブロッキング) を待機した合計時間

sys - user = システムコールに費やされた時間

ユーザー = プログラム内の命令の実行に費やされた時間のみ (動的リンクのオーバーヘッドを含む可能性がありますが、それについては不明です)

于 2009-05-02T00:47:43.220 に答える