1

私のマルチスレッド アプリケーション (c++) は pthreads を使用しています。アプリケーションは自動的にスレッドを生成し、オンデマンドで再利用し、スレッドが長時間アイドル状態になったときにスレッドをキャンセルできるようにします。

さまざまなシナリオにさらされたときに、アプリケーションのパフォーマンスを確認するための統計データをキャプチャする「特別なスレッド」を入れました。

CPUの使用量を知るために、プロセスが終了するのが待ちきれません。

特別なスレッドからこれを使用しようとしましたが、結果は ps & top の出力と一致しないようでした:

struct rusage ru;
    double utime, stime, ttime ;

if (getrusage(RUSAGE_SELF, &ru) == -1)
    return;

utime = ru.ru_utime.tv_sec + ( ru.ru_utime.tv_usec / 1000000 ); // Total CPU time used in user space
stime = ru.ru_stime.tv_sec + ( ru.ru_stime.tv_usec / 1000000 ); // Total CPU time used in kernel space
ttime = utime + stime; // Total CPU Utilization

良いハック、それを行うためのより良い方法があるかどうか、または上記が正しい方法であるかどうか教えてください。実際には何か他のものが欠けていますか?

前もって感謝します。

4

2 に答える 2

0

これがLinuxの場合は、特別な/ procファイルシステムを使用して、プロセスに関するあらゆる種類の興味深い情報を見つけることができます。私は専門家ではありませんが、CPU使用率の統計がどこかにあると確信しています。

于 2011-09-30T14:49:02.890 に答える
0

はい、分かりました!

上に投稿したコードはかなり正しいです。私の混乱は、誤った観察によってのみ引き起こされました。

于 2011-11-17T15:02:25.567 に答える