我如何知道我的进程需要多少 I/O?

我如何知道我的进程需要多少 I/O?

我有一个 IO 绑定的进程:

my_username@GPU8:~$ ps -U my_username -u
USER        PID    %CPU %MEM    VSZ   RSS      TTY      STAT START   TIME COMMAND
my_username 151348 12.7 52.4 47051296 34544380 pts/16   DNl+ 11:38  15:27 python my_py.py

系统上还有来自其他用户的其他 IO 绑定进程。

我知道iotop,但它需要根访问权限,而我没有。

如何知道我的程序正在等待的资源数量(占容量的比例)?我本质上是在寻找我的程序可以再次运行之前的估计等待时间。

答案1

但它需要 root 访问权限,而我没有。

对整体系统性能或影响行为的干预措施的任何详细了解也都需要 root 访问权限。你想达到什么目的?

我的程序可以再次运行之前的估计等待时间。

所以你跑了ps几次,每次你都看到它处于不间断的睡眠状态,所以你的结论是它一直处于这种状态?如果是这样,你的逻辑就有问题。

我们无法开始猜测它何时完成。我们不仅不知道您的程序做了什么,我们也不知道系统上的其他所有东西正在做什么,我们也不知道您的存储的功能是什么。即使我们这样做了,诸如利用率之类的测量结果也有一定的误导性。

如果它是 IO 绑定的,那么每次调用时内核中使用的时间可能远少于 RR_TIMESLICE (100ms)。它到达队列顶部的频率取决于任一时间可运行进程的数量。但是,如果大多数其他进程也是 IO Bound,那么当该进程可运行但尚未进入 CPU 时,可能只会有很短的时间间隔。

相关内容