在Linux(CentOS)中的Python中,在某个时刻获取加载,或在更短的时间段内获取getloadavg()
目前,我正在使用Python的在Linux(CentOS)中的Python中,在某个时刻获取加载,或在更短的时间段内获取getloadavg(),python,linux,load,Python,Linux,Load,目前,我正在使用Python的os.getloadavg()了解服务器(Centos 6.3) 根据python文档,os.getloadavg()“返回过去1、5和15分钟内系统运行队列中的平均进程数”: os.getloadavg() 返回过去1、5和15分钟内系统运行队列中的平均进程数,如果无法获得平均负载,则返回OSError。 问题: 是否可以获取系统运行队列中的进程数 在当前时刻 如果没有,是否有可能在较短的时间内获得平均值 时间,比如最后5秒或10秒 我问这个问题的原因是因为
os.getloadavg()
了解服务器(Centos 6.3)
根据python文档,os.getloadavg()
“返回过去1、5和15分钟内系统运行队列中的平均进程数”:
os.getloadavg()
返回过去1、5和15分钟内系统运行队列中的平均进程数,如果无法获得平均负载,则返回OSError。
问题:
- 是否可以获取系统运行队列中的进程数 在当前时刻
- 如果没有,是否有可能在较短的时间内获得平均值 时间,比如最后5秒或10秒
/proc/stat
检索当前正在运行的进程数:
>>> for l in open("/proc/stat"):
... l = l.split()
... if l[0] == 'procs_running':
... result = int(l[1])
...
>>> print result
6
>>>
相同的编号在/proc/loadavg
中提供:
>>> print int(open("/proc/loadavg").next().split()[3].split('/')[0])
6
平均1分钟是滑动窗口还是每分钟运行?如果它是一个滑动窗口,您可以在1分钟的初始等待时间后对其应用差异,这将为您提供每n秒检查负载的新任务的估计值。据我所知,这些平均值由内核维护(至少在linux中)。所以你可能无法得到更短时间的平均值。但是,应该可以获取当前正在运行的进程数。但这不一定等于系统运行队列中的进程数,系统运行队列具有非常精确的技术定义。
>>> print int(open("/proc/loadavg").next().split()[3].split('/')[0])
6