हाई डिस्क I / O सिस्टम रिस्पॉन्सिबिलिटी / प्रदर्शन को कम क्यों करता है?


19

मुझे कभी समझ नहीं आया कि हाई डिस्क I / O ने सिस्टम को इतना धीमा क्यों किया। यह मेरे लिए अजीब है क्योंकि मैं धीमी / डाउन को हार्ड / ऑप्टिकल ड्राइव डेटा पर निर्भर केवल उन प्रक्रियाओं को प्रभावित करने की उम्मीद करूंगा, लेकिन धीमा-डाउन रैम पर लोड किए गए सामान को भी प्रभावित करता है। मैं यहाँ iowait की बात कर रहा हूँ ।

अन्य काम करने के बजाय प्रोसेसर इंतजार क्यों करता है? क्या कोई इस सीमा की व्याख्या कर सकता है और क्यों इसे लिनक्स कर्नेल में हल नहीं किया गया है? वहाँ एक गिरी वहाँ है कि इस समस्या नहीं है?

[ नोट ] इस प्रदर्शन क्षेत्र में कुछ प्रगति हुई है। एक के लिए, बाद में गुठली (मेरे मामले में 2.6.37) अधिक उत्तरदायी हैं।


क्या एक्सनो ने यह स्पष्ट नहीं किया कि यह लिनक्स कर्नेल में पिछली बार आपके द्वारा पूछे जाने पर कैसे हल किया गया है?
माइकल Mrozek

2
सम्पादनों को देखते हुए, मुझे लगता है कि समस्या को ठीक करने की दिशा में की जा रही प्रगति के बारे में पिछला प्रश्न यह है कि यह प्रश्न इस बारे में है कि समस्या क्यों मौजूद है।
स्टीवन डी

@mic स्टीवन सही है। पिछले प्रश्न के साथ मेरा क्या मतलब था, इस बारे में हमारी लंबी चर्चा हुई। xeno का उत्तर इतना अच्छा था कि मैंने इसे फिट करने के लिए प्रश्न को संपादित किया, और मैंने यहां मूल प्रश्न फिर से पूछा।
tshepang 18

मैं समझता हूं, लेकिन आपका प्रश्न दूसरे के विपरीत है; यहाँ आप कहते हैं "क्या कोई इस सीमा को समझा सकता है और इसे लिनक्स कर्नेल में हल क्यों नहीं किया गया है? क्या कोई ऐसा कर्नेल है जिसके पास यह समस्या नहीं है?" हल किया जा चुका है।"
माइकल Mrozek

@mic वास्तव में नहीं है। कर्नेल अभी भी iowait करता है , जिसका अर्थ है कि यह अभी भी इंतजार कर रहा है। मुझे लगता है कि xeno के जवाब में सिस्टम रिस्पॉन्सिबिलिटी में ज्यादा सुधार हुआ है । और यह कि मैं सहमत हूं, जैसा कि मैंने सवाल पर नोट किया है।
tshepang

जवाबों:


9

ऑपरेटिंग सिस्टम वर्चुअल मेमोरी का उपयोग करते हैं ताकि भौतिक रैम उपलब्ध होने की तुलना में अधिक मेमोरी का उपयोग किया जा सके। जब कर्नेल यह तय करता है कि भौतिक मेमोरी पेज के लिए इसका बेहतर उपयोग है, तो इसकी सामग्री डिस्क पर भंडारण के लिए "पृष्ठांकित" हो सकती है। जब इस तरह के वर्चुअल मेमोरी पेज को पृष्ठांकित किया जाता है, तो यह पेज फॉल्ट उत्पन्न करता है और डिस्क से रैम में वापस चला जाता है।

पृष्ठ दोष प्रदर्शन के लिए एक आपदा हैं क्योंकि डिस्क विलंबता को मिलीसेकंड में मापा जाता है, जबकि रैम विलंबता को नैनोसेकंड में मापा जाता है। (1 मिलीसेकंड = एक मिलियन नैनोसेकंड!)

मेमोरी का उपयोग न केवल उपयोगकर्ता प्रक्रियाओं द्वारा किया जाता है, बल्कि फ़ाइल सिस्टम कैशिंग जैसी चीजों के लिए कर्नेल द्वारा भी किया जाता है। फ़ाइल सिस्टम गतिविधि के दौरान, कर्नेल हाल ही में उपयोग किए गए डेटा को कैश करेगा। धारणा यह है कि एक अच्छा मौका है कि एक ही डेटा का उपयोग शीघ्र ही फिर से किया जाएगा, इसलिए कैशिंग को I / O प्रदर्शन में सुधार करना चाहिए।

फ़ाइल सिस्टम कैश के लिए उपयोग की जा रही भौतिक मेमोरी का उपयोग प्रक्रियाओं के लिए नहीं किया जा सकता है, इसलिए फ़ाइल सिस्टम गतिविधि के दौरान अधिक प्रक्रिया मेमोरी को पृष्ठांकित किया जाएगा और पृष्ठ दोष बढ़ जाएंगे। इसके अलावा, डिस्क पृष्ठों को डिस्क से स्थानांतरित करने के लिए कम डिस्क I / O बैंडविड्थ उपलब्ध है। परिणामस्वरूप प्रक्रियाएं ठप हो सकती हैं।


मुझे पता है कि यह गंदगी के रूप में पुराना है लेकिन, यह कैसे आ रहा है, इस पर निर्भर करता है कि I / O की उच्च मात्रा बहुत अधिक रुकावट उत्पन्न कर सकती है और परिणामस्वरूप संदर्भ CPU समय बर्बाद कर रहा है।
ब्राचली

5

जहां तक ​​मैं इसे समझता हूं, IOwait का मतलब है कि प्रोसेसर नहीं, एक प्रक्रिया, IO के उपलब्ध होने का इंतजार कर रही है। प्रोसेसर को हार्ड ड्राइव की तुलना में बहुत अधिक गति मिली है, जिसका अर्थ है कि अधिक कोड तेजी से खत्म हो जाएगा और फिर डिस्क को पढ़ना होगा। जब ड्राइव की तुलना में कई और अधिक पढ़ने की आवश्यकता होती है तो आप काफी तेजी से कर सकते हैं, आप प्रोसेसर के इंतजार के साथ समाप्त होते हैं। जिस तरह से यह तय किया जाता है कि डिस्क पर पढ़ने / लिखने के लिए कौन तय करता है, ब्लॉक अनुसूचक द्वारा निर्धारित किया जाता है, ज्यादातर मामलों में अब सीएफक्यू। यदि आप CFQ का उपयोग कर रहे हैं, और आपको सिस्टम जवाबदेही बढ़ाने के लिए समग्र IO समय का कम उपयोग करने के लिए एक प्रक्रिया की आवश्यकता है, तो आप उपयोग कर सकते हैं ionice -c3 <processid>। यह सिस्टम को केवल इस प्रक्रिया को IO को केवल तभी बताता है जब उसे और कुछ नहीं चाहिए।

यह अभी भी दिलचस्प है और iowait समस्या को बेहतर ढंग से समझाता है।

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