目前,我正在使用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.
问题:
我问的原因是因为我得到了平均负载,然后如果它太高,就会杀死一些进程。这可能每分钟发生多次,所以我担心在1分钟的平均值赶上之前会有太多的进程被杀死。
谢谢!
答案 0 :(得分:4)
根据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