3

マルチスレッド C アプリケーション (デーモン) があります。アプリケーションへのスレッドごとに CPU 使用率を測定できますか?

4

2 に答える 2

7

これは古い質問ですが、私自身の Google 検索で最も関連性の高いヒットとして出てきました。そこで、私が導き出した答えを出します。

pthreads またはそれを使用するライブラリ (Boost ライブラリなど) を使用していると仮定します。

pthread_getcpuclockidとを使用できますclock_gettime
man ページは、 pthread_getcpuclockidclock_gettimeにリンクしています。

現在の時刻をdoubleとして返す簡単な例を次に示します。

double cpuNow( void ) {
    struct timespec ts;
    clockid_t cid;

    pthread_getcpuclockid(pthread_self(), &cid);
    clock_gettime(cid, &ts);
    return ts.tv_sec + (((double)ts.tv_nsec)*0.000000001);
}
于 2014-06-04T20:49:36.113 に答える
1

からデータを解析できます /proc/<PID>/stat。CPU ラインは次のようになります。

cpu  143359 8217 480152 132054567 45162 5678 24656 0 0
于 2013-09-05T14:11:45.760 に答える