2013-02-26 22 views
5

वर्तमान में एक पल में लोड हो जाओ, सर्वर (Centos 6.3)समय या getloadavg() में Linux (CentOS) में अजगर में एक छोटे समय अवधि के लिए

के अनुसार पर वर्तमान लोड की एक विचार प्राप्त करने के लिए पायथन के os.getloadavg() उपयोग कर रहा हूँ अजगर प्रलेखन, 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 मिनट की औसत पकड़ने से पहले कई प्रक्रियाएं मारे जाएंगी।

धन्यवाद! /proc/loadavg में

>>> for l in open("/proc/stat"): 
... l = l.split() 
... if l[0] == 'procs_running': 
...  result = int(l[1]) 
... 
>>> print result 
6 
>>> 

एक ही नंबर उपलब्ध है::

+0

1 है मिनट एक औसत स्लाइडिंग खिड़की या हर मिनट चलाते हैं? यदि यह एक स्लाइडिंग विंडो है तो आप 1 मिनट के प्रारंभिक प्रतीक्षा समय के बाद इसमें अंतर लागू कर सकते हैं, और यह आपको लोड की जांच करने के लिए चुने गए प्रत्येक एन-सेकंड के नए कार्यों का अनुमान देगा। – Arcturus

+0

जहां तक ​​मुझे पता है, उन औसत कर्नेल (कम से कम लिनक्स में) द्वारा बनाए रखा जाता है। तो आप शायद कम समय अवधि के लिए औसत नहीं प्राप्त कर सकते हैं। हालांकि, मौजूदा प्रक्रियाओं की वर्तमान संख्या प्राप्त करना संभव होना चाहिए। लेकिन यह आवश्यक रूप से सिस्टम रन कतार में प्रक्रियाओं की संख्या के बराबर नहीं होगा जिसमें बहुत तकनीकी रूप से सटीक परिभाषा है। – entropy

उत्तर

4

लिनक्स 3.5 कर्नेल स्रोत में Documentation/filesystems/proc.txt के अनुसार, आप प्रक्रियाओं वर्तमान में चल रहे की संख्या /proc/stat से प्राप्त कर सकते हैं

>>> print int(open("/proc/loadavg").next().split()[3].split('/')[0]) 
6 
संबंधित मुद्दे