目前,我正在使用Python的os.getloadavg()来了解服务器上的当前负载(Centos 6.3)
根据python文档,os.getloadavg()“返回在过去的1,5和15分钟内平均的系统运行队列中的进程数”:
http://docs.python.org/2/library/os.html#os.getloadavg
os.getloadavg() Return the number of processes in the system run queue averaged over the last 1,5,and 15 minutes or raises OSError if the load average was unobtainable.
题:
>是否可以获取系统运行队列中的进程数
在当前的瞬间?
>如果没有,是否有可能在较短的时间内获得平均值
时间,像过去5或10秒?
我问的原因是因为我得到了平均负载,然后如果它太高,就会杀死一些进程.这可能每分钟发生多次,因此我担心在1分钟平均值赶上之前会有太多进程被杀死.
谢谢!
最佳答案
根据Linux 3.5内核源代码中的Documentation/filesystems/proc.txt,您可以从/ 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