Mac OS X中的每个进程磁盘读/写统计信息

时间:2013-04-03 11:53:10

标签: performance macos statistics disk

如何在Mac OS X中按编程方式获取每个进程磁盘的i / o统计信息。在“Activity Monitor”应用程序或“top”命令中,我们只能获得整个系统磁盘的i / o统计信息。
供参考Similar question asked for PC.

5 个答案:

答案 0 :(得分:28)

使用iotop(以root身份),例如:

iotop -C 3 10

但最好的方式(对我而言)是:

sudo fs_usage -f filesys

答案 1 :(得分:4)

由于这里没有关于如何以编程方式执行此操作的答案,所以还有更多信息。如果可以使用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>

答案 2 :(得分:1)

活动监视器显示&#34;磁盘中的每个进程I / O统计信息&#34; tab(也许是自问题提出以来的新内容)。enter image description here参见&#34; Bytes Written&#34;和#34;字节读取&#34;列。

答案 3 :(得分:0)

由于OP专门询问了我建议的磁盘I / O统计信息

sudo fs_usage -f diskio

仅关注读/写事件,与接受的答案中提到的-f filesys相反。 (不知道当时是否diskio选项不可用。)

答案 4 :(得分:-1)

我找到了iStat Menus,它位于菜单栏中。仅显示前5个磁盘读/写用户(我不确定它是否为总和,但它不排序)。