如何在 Mac OS X 中以编程方式获取每个进程的磁盘 i/o 统计信息。在“Activity Monitor”应用程序或“top”命令中,我们只能获取整个系统磁盘 i/o 统计信息。
供参考对 PC 提出了类似的问题。
问问题
15598 次
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 回答
1
我找到了 iStat Menus,它位于菜单栏中。只显示前 5 个磁盘读/写用户(我不确定它是否是总和,但它没有排序)。
于 2017-03-19T10:49:08.737 回答