Mac OSXでプロセスごとのディスクI/O統計をプログラムで取得するにはどうすればよいですか。「アクティビティモニター」アプリケーションまたは「top」コマンドでは、システム全体のディスクI/O統計しか取得できません。
参考のために PCに同様の質問をしました。
iotop
(ルートとして)を使用します。次に例を示します。
iotop -C 3 10
しかし、(私にとって)最善の方法は次のとおりです。
Sudo fs_usage -f filesys
これをプログラムで行う方法についてはここに答えがないので、ここにいくつかの詳細情報があります。 C/C++/ObjectiveC++を使用できる場合は、libprocからいくつかの情報を取得できます。関数 proc_pid_rusage
は、特定のプロセスに関する一連のリソース情報を提供しますが、質問に関連するものは次のとおりです。
struct rusage_info_v3 {
...
uint64_t ri_diskio_bytesread;
uint64_t ri_diskio_byteswritten;
...
};
サンプルコード:
pid_t pid = 10000;
rusage_info_current rusage;
if (proc_pid_rusage(pid, RUSAGE_INFO_CURRENT, (void **)&rusage) == 0)
{
cout << rusage.ri_diskio_bytesread << endl;
cout << rusage.ri_diskio_byteswritten << endl;
}
見る <libproc.h>
および<sys/resource.h>
詳細については。
OPは特にディスクI/O統計を要求したので、私はお勧めします
Sudo fs_usage -f diskio
これは、受け入れられた回答に記載されている-f filesys
とは異なり、読み取り/書き込みイベントのみに焦点を当てています。 (当時、diskio
オプションが利用できなかったかどうかはわかりません。)
メニューバーにある iStat Menus を見つけました。上位5つのディスク読み取り/書き込みユーザーのみが表示されます(合計かどうかはわかりませんが、並べ替えられません)。