शीर्ष और लोड औसत को समझना


12

मैं तीनों लोड क्षेत्रों में एक निश्चित मशीन (लगभग 9) पर एक उच्च लोड औसत देख रहा हूं। मैं समझता हूं कि राज्य में चलने वाली प्रक्रियाओं की संख्या "रन" / वर्तमान में सीपीयू समय की इच्छा है। क्या मैं यह तर्क देने में सही हूं कि अगर मेरी मशीन पर एन प्रक्रियाएं चल रही हैं तो यह एन से अधिक लोड का उत्पादन नहीं कर सकता है?

इसके अलावा, लोड प्रक्रियाओं या थ्रेड्स के संबंध में गणना करता है? दूसरे शब्दों में, क्या एक मल्टीथ्रेडेड प्रक्रिया 1 से अधिक लोड का उत्पादन कर सकती है?


ध्यान दें कि (क्योंकि वे आमतौर पर बहुत जल्द निर्धारित होने की उम्मीद करते हैं), "निर्बाध" स्थिति में कार्यों को भी चलाने के रूप में गिना जाता है। बस एक विस्तार, ऐसा कुछ नहीं जो आपके सवाल को बदल दे।
mattdm

जवाबों:


7

लोड औसत को आमतौर पर "रन कतार की औसत लंबाई" के रूप में वर्णित किया जाता है। इसलिए कुछ सीपीयू-खपत प्रक्रियाएं या धागे एलए को 1 से ऊपर उठा सकते हैं। एलए कोर सीपीयू कोर की कुल संख्या से कम होने पर कोई समस्या नहीं है। लेकिन अगर यह सीपीयू की संख्या से अधिक हो जाता है, तो इसका मतलब है कि कुछ धागे / प्रक्रिया कतार में रहेंगे, चलाने के लिए तैयार होंगे, लेकिन मुफ्त सीपीयू की प्रतीक्षा कर रहे हैं।


3

लोड औसत की गणना करने के लिए उपयोग किए जाने वाले नंबर रन या निर्बाध अवस्था में कार्य हैं और चलती औसत के समय के स्लाइस में किए गए कार्य की मात्रा है। ये कार्य एक बहुआयामी प्रक्रिया का हिस्सा हो सकते हैं। उपयोग किए गए एल्गोरिथ्म से परिणामों को चौरसाई करने के कारण खेत समय से पहले फजी होते हैं।

1 का लोड एक सीपीयू के 100% काम के बराबर है। यदि आपके पास एक मल्टीथ्रेडेड एप्लिकेशन था जो उपलब्ध सीपीयू की संख्या से अधिक सक्रिय थ्रेड्स की संख्या को प्रबंधित करने में सक्षम था, तो आप एक ही प्रक्रिया को ऊपर लोड ड्राइव कर सकते हैं। यह संभवतः एक अल्पकालिक स्पाइक होगा और प्रतिबिंबित नहीं होगा। लोड औसत के लंबे समय तक विचार।

इसके अलावा, चूंकि मल्टी-कोर सिस्टम होने से पहले लोड औसत विकसित किया गया था, इसलिए कोर की कुल उपलब्ध संख्या से लोड संख्या को विभाजित करना महत्वपूर्ण है। यदि यह 4 सॉकेट क्वाड कोर सिस्टम पर 9 का निरंतर भार है, तो यह 9 में से 9 लोड है और वास्तव में समस्या नहीं है।


1
- मैंने अभी तक एक ऐसी प्रणाली को देखा है जहां सॉकेट पर कई कोर उपयोगकर्ता-अंतरिक्ष के लिए एक तरह से सामने आते हैं जो उन्हें कुछ भी और अधिक सीपीयू जैसा दिखता है। तो शीर्ष पर, 4-सॉकेट क्वाड-कोर सिस्टम पर, 16 सीपीयू देखे जाते हैं। (तो एक आसानी से देख सकते हैं कि 9 का भार CPUs की संख्या कम है।)
mattdm

मैं समझता हूं कि संख्याएं लघुगणक हैं, इसलिए वे केवल 1 से ऊपर या 1 के नीचे हैं। मेरे पास एक प्रणाली है, मैंने सिस्टम रिपोर्ट को देखा: लोड औसत: 10.41, 9.57, 9.26। क्या?? एक लिनक्स सिस्टम रिपोर्ट लोड औसत क्यों होगा: 0.81, 1.57, 0.98 जबकि यह प्रणाली लोड औसत रिपोर्ट करती है: 10.41, 9.57, 9.26? क्या सभी यूनिक्स इस पर समान नहीं हैं?
djangofan

3

कर्नेल / शेड्यूल / loadavg.c देखें, जिसमें प्रारंभ में एक लंबी और उत्कृष्ट टिप्पणी है, जो रनिंगेबल थ्रेड्स ("रन कतार") की संख्या के घातीय रूप से क्षय औसत से लोड औसत की व्युत्पत्ति की व्याख्या करता है, साथ ही अबाधित थ्रेड्स की संख्या (प्रतीक्षा) I / O या लॉक पर प्रतीक्षा कर रहा है)।

यहाँ टिप्पणी का सार है, लेकिन यह पूरी तरह से पढ़ने में सार्थक है:

 * The global load average is an exponentially decaying average of
 * nr_running + nr_uninterruptible.
 *
 * Once every LOAD_FREQ:
 *     nr_active = 0;
 *     for_each_possible_cpu(cpu)
 *         nr_active += cpu_of(cpu)->nr_running +
 *                      cpu_of(cpu)->nr_uninterruptible;
 *     avenrun[n] = avenrun[0] *
 *                  exp_n + nr_active *
 *                  (1 - exp_n)

वास्तविक जीवन कोड को कुछ हद तक जटिल बनाता है: प्रति-सीपीयू काउंटरर्स, टिकलेस गुठली, हॉटस्पैप सीपीयू, फ्लोटिंग पॉइंट कोड की कमी, एक्सप-एन के निश्चित-बिंदु कार्यान्वयन की आवश्यकता होती है। लेकिन यह देखना आसान है कि ये सभी टिप्पणी में वर्णित विधि को ईमानदारी से लागू करने की दिशा में काम कर रहे हैं।

आप ध्यान देंगे कि लिनक्स केवल प्रक्रियाओं को नहीं, बल्कि आपके प्रश्न का उत्तर देने वाले थ्रेड्स को गिनता है ।


0

3 लोड औसत कुछ संख्या में घूमने वाले लॉगरिदमिक फ़ंक्शन की तरह हैं 1. एफ (एक्स) = ईएक्स (ई से एक्स एक्सपोर्टर) के समान कुछ। तकनीकी रूप से एक घातीय क्षय फ़ंक्शन का एक निश्चित-बिंदु प्रतिनिधित्व एक औसत अनुकरण करता है। वे प्रति सीपीयू एडिटिव हैं, इसलिए क्वाड-कोर सिस्टम पर एक पूर्ण भार 4.00 की तरह लग सकता है। पहला नंबर अंतिम मिनट में औसत है, दूसरा अंतिम पांच मिनट में औसत है और तीसरा अंतिम 15 मिनट में औसत है। मैंने सोचा कि एक उत्तर को यहां छोड़ दिया जाना चाहिए जिसमें उल्लेख है।


0

त्वरित लोड: दौड़ने या प्रतीक्षा करने की संख्या, या दूसरे तरीके से, चलाने के लिए तैयार कार्यों की संख्या

लोड औसत: ऊपर का माप लेकिन उसी माप के पिछले नमूनों के साथ घातीय औसत

ये दोनों संख्याएँ अनबाउंड हैं, और अक्सर एन की तुलना में बहुत बड़ी हैं।

स्पष्ट होने के लिए: लिनक्स पर लोड गणना में थ्रेड्स शामिल हैं, इसमें कोई संदेह नहीं है। आप एक एकल प्रक्रिया के साथ एक मनमाने ढंग से बड़े लोड का उत्पादन कर सकते हैं जो कई थ्रेड बनाता है।

इस पर अधिक यहाँ

http://blog.angulosolido.pt/2015/04/linux-load-average-definitive-summary.html

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.