[英]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.