如何在Mac OS X中以编程方式获取每个进程的磁盘I/O统计信息。在“Activity Monitor”应用程序或“top”命令中,我们只能获取整个系统的磁盘I/O统计信息。
参考类似问题 PC 上提出的。
如何在Mac OS X中以编程方式获取每个进程的磁盘I/O统计信息。在“Activity Monitor”应用程序或“top”命令中,我们只能获取整个系统的磁盘I/O统计信息。
参考类似问题 PC 上提出的。
使用iotop
(作为root用户),例如:
iotop -C 3 10
但是对我来说,最好的方法是:
sudo fs_usage -f filesys
iotop
无法工作,因为iotop
依赖于dtrace
。而El Capitan的根浸(SIP)模式会禁用dtrace
。 - bric3由于这里没有关于如何以编程方式执行此操作的答案,因此在此提供更多信息。如果您可以使用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
选项。)