लिनक्स लोड गणना में इस्तेमाल होने वाला एक सीधा 1/5/15 मिनट का औसत क्यों नहीं है?


28

हाल ही में जब तक मैंने सोचा था कि लोड औसत (उदाहरण के लिए शीर्ष में दिखाया गया है) राज्य में चल रही प्रक्रिया की संख्या के अंतिम मूल्यों पर एक चलती औसत था "रननेबल" या "रनिंग"। और n को चलती औसत की "लंबाई" द्वारा परिभाषित किया गया होगा: चूंकि एल्गोरिथ्म लोड की गणना करने के लिए एल्गोरिथ्म हर 5 सेकंड को ट्रिगर करता है, n 1 मिनट लोड औसत के लिए 12, 5 मिनट लोड औसत के लिए 12x5 और 12x15 होगा 15 मिनट लोड औसत के लिए।

: लेकिन तब मैं इस लेख को पढ़ने के http://www.linuxjournal.com/article/9001 । लेख काफी पुराना है, लेकिन उसी एल्गोरिथ्म को आज लिनक्स कर्नेल में लागू किया गया है। लोड औसत एक चलती औसत नहीं है, लेकिन एक एल्गोरिथ्म है जिसके लिए मुझे एक नाम नहीं पता है। वैसे भी मैंने लिनक्स कर्नेल एल्गोरिथम और एक काल्पनिक आवधिक लोड के लिए एक चलती औसत के बीच तुलना की है:

लोड ग्राफ

एक बहुत बड़ा अंतर है।

अंत में मेरे प्रश्न हैं:

  • यह क्रियान्वयन एक सच्चे चलती औसत की तुलना में क्यों चुना गया है, इसका वास्तविक अर्थ क्या है?
  • क्यों हर कोई "1 मिनट लोड औसत" के बारे में बोलता है क्योंकि एल्गोरिदम द्वारा अंतिम मिनट की तुलना में बहुत अधिक ध्यान में रखा जाता है। (गणितीय रूप से, बूट के बाद से सभी उपाय; व्यवहार में, गोल-गोल त्रुटि को ध्यान में रखते हुए - अभी भी बहुत सारे उपाय)

5
यह एक घातीय चलती औसत (ईएमए) है, जिसका उपयोग वित्त (तकनीकी विश्लेषण) में उदाहरण के लिए भी किया जाता है। लाभ संभवतः समान हैं - ईएमए की गणना केवल पिछले और वर्तमान मूल्य से की जा सकती है, और हाल के मूल्यों को पुराने मूल्यों से अधिक वजन दिया जाता है। एक मानक एमए में सबसे पुराना मूल्य सबसे हाल ही में एक के रूप में औसत के रूप में ज्यादा योगदान देता है, और कभी-कभी हम सोचते हैं कि हाल के मूल्य अधिक महत्वपूर्ण हैं।
jg-faustus

जवाबों:


24

यह अंतर मूल बर्कले यूनिक्स में वापस आता है, और इस तथ्य से उपजा है कि कर्नेल वास्तव में एक रोलिंग औसत नहीं रख सकता है; ऐसा करने के लिए बड़ी संख्या में पिछले रीडिंग को बनाए रखने की आवश्यकता होगी, और विशेष रूप से पुराने दिनों में इसके लिए स्पेयर करने की स्मृति नहीं थी। इसके बजाय उपयोग किए गए एल्गोरिथ्म में यह लाभ है कि सभी कर्नेल को रखने की आवश्यकता पिछले गणना का परिणाम है।

ध्यान रखें कि एल्गोरिथ्म सच्चाई से थोड़ा पीछे था जब कंप्यूटर की गति और इसी घड़ी चक्र को गीगा के बजाय मेगाहर्ट्ज के दसियों में मापा गया था; इन दिनों में विसंगतियों के लिए बहुत अधिक समय है।


2
ठीक है, कि कार्यान्वयन की पसंद बताते हैं। क्या आप जानते हैं कि बहुत से लोगों को लगता है कि तीन भार औसत की गणना पिछले 1 मिनट / 5 मिनट / 15 मिनट से अधिक की जाती है? मुझे लगता है कि यह गलत है, एल्गोरिथ्म सभी अंतिम मूल्यों पर औसत गणना करता है। मैं समझता हूं कि पुराने मूल्यों का महत्व कम है कि नए मूल्य लेकिन फिर भी, 1 मिनट से अधिक पुराने मान अभी भी 1min लोड औसत में एक नगण्य प्रभाव है। तो मेरी राय में "1min / 5min / 15min" का कोई मतलब नहीं है, लेकिन मैं गलत हो सकता है (?)
user368507

5
क्योंकि यही प्रलेखन है, और हर कार्यक्रम जो उन्हें मूल बीएसडी के साथ शुरू करने की सूचना देता है uptimeऔर w, दावा किया है; आपको यह जानने के लिए कर्नेल स्रोतों को देखना होगा कि यह वास्तव में सच नहीं था।
geekosaur

1
यह वास्तव में एक दया है
user368507

3
@ user5528 बार 1min/5min/15min है समझ है। वे उस समय का निर्धारण करते हैं जिसके बाद कुछ स्थिर कारक (शायद ई = 2.71 .. या शायद 2) द्वारा वर्तमान लोड का प्रभाव कम हो जाता है। बस इसे आज़माएं।
मारार्टिनस

2
@aaartinus हाँ। 1min / 5min / 15min उस समय को निर्धारित करता है जिसके बाद पुराने उपायों का वजन कम होता है या EMA संकलन में 1 / e के बराबर होता है। यह सटीकता मैन अपटाइम या मैन टॉप में दिखाई नहीं देती है ।
user368507
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.