Per Process disk read/write statistics in Mac OS X

后端 未结 5 1587
我在风中等你
我在风中等你 2021-02-01 05:08

How do I get programatically per process disk i/o statistics in Mac OS X. In \'Activity Monitor\' application or in \'top\' command we can only get whole system disk i/o statist

相关标签:
5条回答
  • 2021-02-01 05:36

    Since OP specifically asked for disk I/O statistics I'd recommend

    sudo fs_usage -f diskio
    

    which focuses only on read/write events, contrary to -f filesys as mentioned in the accepted answer. (Don't know if the diskio option wasn't available back then.)

    0 讨论(0)
  • 2021-02-01 05:37

    I found iStat Menus, which sits in the menu bar. Only shows the top 5 disk read/write users (and I'm not sure if it's the sum, but it doesn't sort).

    0 讨论(0)
  • 2021-02-01 05:46

    Since there isn't an answer here about how to do this programatically, here's some more info. You can get some info out of libproc if you can use C/C++/ObjectiveC++. The function proc_pid_rusage gives you a bunch of resource info for a given process, but the ones related to your question are:

    struct rusage_info_v3 {
        ...
        uint64_t ri_diskio_bytesread;
        uint64_t ri_diskio_byteswritten;
        ...
    };
    

    Sample code:

    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;
    }
    

    See <libproc.h> and <sys/resource.h> for more info.

    0 讨论(0)
  • 2021-02-01 05:51

    Use iotop (as root), for example:

    iotop -C 3 10
    

    But the best way (for me) is:

    sudo fs_usage -f filesys
    
    0 讨论(0)
  • 2021-02-01 05:52

    Activity Monitor shows per process I/O statistics in the "disk" tab (perhaps its new since this question was asked). See "Bytes Written" and "Bytes Read" columns.

    0 讨论(0)
提交回复
热议问题