jgr*_*jgr 11
此代码计算所有核心上的用户利用率.
import os
import time
import multiprocessing
def main():
jiffy = os.sysconf(os.sysconf_names['SC_CLK_TCK'])
num_cpu = multiprocessing.cpu_count()
stat_fd = open('/proc/stat')
stat_buf = stat_fd.readlines()[0].split()
user, nice, sys, idle, iowait, irq, sirq = ( float(stat_buf[1]), float(stat_buf[2]),
float(stat_buf[3]), float(stat_buf[4]),
float(stat_buf[5]), float(stat_buf[6]),
float(stat_buf[7]) )
stat_fd.close()
time.sleep(1)
stat_fd = open('/proc/stat')
stat_buf = stat_fd.readlines()[0].split()
user_n, nice_n, sys_n, idle_n, iowait_n, irq_n, sirq_n = ( float(stat_buf[1]), float(stat_buf[2]),.
float(stat_buf[3]), float(stat_buf[4]),
float(stat_buf[5]), float(stat_buf[6]),
float(stat_buf[7]) )
stat_fd.close()
print ((user_n - user) * 100 / jiffy) / num_cpu
if __name__ == '__main__':
main()
Run Code Online (Sandbox Code Playgroud)
从Documentation/filesystems/proc.txt:
(...) 这些数字标识 CPU 执行不同类型工作所花费的时间量。时间单位为 USER_HZ(通常为百分之一秒)。
因此,要计算利用率百分比,您需要:
USER_HZ机器上有什么第二个很简单:btime同一个文件中有一行您可以使用它。有关信息USER_HZ,请查看如何获取每 jiffy 的毫秒数。