Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Performance Mac OS X中的每进程磁盘读/写统计信息_Performance_Macos_Statistics_Disk - Fatal编程技术网

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

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为给定流程提供一系列资源信息,但与您的问题相关的是

如何在Mac OS X中以编程方式获取每个进程的磁盘I/o统计信息。在“活动监视器”应用程序或“top”命令中,我们只能获取整个系统磁盘I/o统计信息。
参考

使用
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