指定されたPIDに関するすべての統計を取得するには?例えば、どれくらい走ったのですか? CPU、メモリ、ディスク、ネットワークの最大/最小/平均使用量は何ですか?

指定されたPIDに関するすべての統計を取得するには?例えば、どれくらい走ったのですか? CPU、メモリ、ディスク、ネットワークの最大/最小/平均使用量は何ですか?

これは小さなC ++アプリケーションです。

#include <iostream>
#include <unistd.h>

using namespace std;

int main()
{
    cout<<"Hello World"<<endl;
    std::cout << "pid = " << getpid() << '\n';

    return 0;
}

単に文字列とアプリケーションのpidを印刷します。

このPIDに関するすべての統計をどのように取得できますか?たとえば、どのくらいの期間運営されていますか? CPU、メモリ、ディスク、ネットワークの最大、最小、平均使用量はいくらですか?

注:pidを取得するとアプリケーションが完了したため/proc/PID/動作しません。

$ ./a.out
Hello World
pid = 19691                   
$ cd /proc/19691
-bash: cd: /proc/19691: No such file or directory

ベストアンサー1

これは、リソース使用量を測定するプロセスが測定を実行するプロセスの子である場合に可能です。これを実行するには別のプログラムが必要で、a.outそれを待ってから呼び出します。getrusage:

struct rusage rusage;
getrusage(RUSAGE_CHILDREN, &rusage);

これにより、rusage終了して待機しているすべての発信者子孫の集約リソース使用量で構造が満たされます。

Linuxでは、次のものを使用できます。システムwait4コール待機通話と子供別getrusage通貨を組み合わせます。

おすすめ記事