![](/img/trans.png)
[英]Programmatically getting per-process disk io statistics on Windows?
[英]Per Process disk read/write statistics in Mac OS X
如何在Mac OS X中以编程方式获取每个进程磁盘的i / o统计信息。在“Activity Monitor”应用程序或“top”命令中,我们只能获得整个系统磁盘的i / o统计信息。
供参考类似的问题要求PC。
使用iotop
(以root身份),例如:
iotop -C 3 10
但最好的方法(对我来说)是:
sudo fs_usage -f filesys
由于这里没有关于如何以编程方式执行此操作的答案,因此这里有更多信息。 如果可以使用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
选项是否可用。)
我找到了iStat Menus ,它位于菜单栏中。 仅显示前5个磁盘读/写用户(我不确定它是否是总和,但它不排序)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.