在Linux(CentOS)的Python中获取负载或getloadavg()在较短的时间内获取负载

时间:2013-02-26 23:52:28

标签: python linux load

目前,我正在使用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分钟的平均值赶上之前会有太多的进程被杀死。

谢谢!

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