27

如何在 Mac OS X 中以编程方式获取每个进程的磁盘 i/o 统计信息。在“Activity Monitor”应用程序或“top”命令中,我们只能获取整个系统磁盘 i/o 统计信息。
供参考对 PC 提出了类似的问题。

4

5 回答 5

36

使用iotop(作为根),例如:

iotop -C 3 10

但最好的方法(对我来说)是:

sudo fs_usage -f filesys
于 2013-05-08T22:36:27.160 回答
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>了解更多信息。

于 2016-08-26T14:21:37.937 回答
3

由于 OP 专门要求提供磁盘 I/O 统计信息,因此我建议

sudo fs_usage -f diskio

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

于 2019-07-10T08:50:17.627 回答
2

活动监视器在“磁盘”选项卡中显示每个进程的 I/O 统计信息(可能是自提出此问题以来的新内容)。在此处输入图像描述请参阅“写入字节数”和“读取字节数”列。

于 2016-10-26T18:02:43.283 回答
1

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

于 2017-03-19T10:49:08.737 回答