Performance Mac OS X中的每进程磁盘读/写统计信息
如何在Mac OS X中以编程方式获取每个进程的磁盘I/o统计信息。在“活动监视器”应用程序或“top”命令中,我们只能获取整个系统磁盘I/o统计信息。Performance Mac OS X中的每进程磁盘读/写统计信息,performance,macos,statistics,disk,Performance,Macos,Statistics,Disk,如何在Mac OS X中以编程方式获取每个进程的磁盘I/o统计信息。在“活动监视器”应用程序或“top”命令中,我们只能获取整个系统磁盘I/o统计信息。 参考使用iotop(作为根目录),例如: iotop -C 3 10 但(对我来说)最好的办法是: 因为这里没有一个关于如何通过编程实现的答案,这里有一些更多的信息。如果可以使用C/C++/ObjectiveC++,您可以从libproc获得一些信息。函数proc\u pid\u rusage为给定流程提供一系列资源信息,但与您的问题相关的是
参考使用
iotop
(作为根目录),例如:
iotop -C 3 10
但(对我来说)最好的办法是:
因为这里没有一个关于如何通过编程实现的答案,这里有一些更多的信息。如果可以使用C/C++/ObjectiveC++,您可以从libproc获得一些信息。函数
proc\u pid\u 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;
}
pid\u t pid=10000;
rusage\u信息\u当前rusage;
如果(进程pid rusage(pid,rusage信息当前,(无效**)和rusage)==0)
{
coutActivity Monitor在“磁盘”选项卡中显示每个进程的I/O统计信息(可能是这个问题提出后的新信息)。请参阅“Bytes Writed”和“Bytes Read”列。我找到了它,它位于菜单栏中。只显示前5位磁盘读/写用户(我不确定它是否是总和,但不排序).因为OP特别要求我推荐磁盘I/O统计信息
sudo fs_usage -f diskio
它只关注读/写事件,与公认答案中提到的-f filesys
相反。(不知道当时是否没有diskio
选项。)@Anoop这是处理器监控工具的一部分,不是用于黑客非常方便。iotop只向我显示mds和mdworker正在敲打我的磁盘。fs_使用情况显示Mail.app中有无数文件在索引,因此为我指出了问题所在的正确方向。请注意,对于El Capitan,它不起作用,因为iotop
依赖于dtrace
。El Capitan使用无根(SIP)禁用dtrace
模式。这在Sierra上也被打破。这些是进程生命周期内的聚合计数,不显示top或iotop之类的周期性/当前统计数据。我不知道苹果为什么认为这些统计数据有用。人们想要iotop
之类的功能。对,我最终只是按“写入的字节数”等进行排序,并手动跟踪增量这是我的眼睛,一点也不悲伤。
sudo fs_usage -f diskio