क्यों CPU IO (वा) पर समय बिताया?


18

मुझे पता है wa(इन top) I / O के इंतजार में सीपीयू समय को मापता है। कई लेख कहते हैं कि

लेकिन मुझे भ्रम है कि, 2 ज्ञान बिंदुओं के आधार पर:

  1. यदि कोई प्रक्रिया डिस्क को पढ़ने के लिए सिस्टम कॉल का उपयोग करती है, तो प्रक्रिया अवरुद्ध है।
  2. यदि कोई प्रक्रिया अवरुद्ध है, तो इसे CPU पर शेड्यूल नहीं किया जा सकता है।

सही?

ऐसा लगता है कि सीपीयू के लिए I / O के इंतजार का कोई समय नहीं है ... क्या होता है?

अगर आगे पढ़ने के लिए मेरे लिए कुछ किताबों या लेखों की सिफारिश की जाए, तो बेहतर है।


मैंने इसमें कदम रखा और एक उचित उत्तर लिखा। क्षमा करें, जब आप मेरी जरूरत थी, तो मैं वहां नहीं था ;-)
एलेक टीएल

जवाबों:


22

CPU निष्क्रिय स्थिति को दो अलग-अलग "उप" -स्टेट में विभाजित किया गया है: iowaitऔर idle

यदि सीपीयू निष्क्रिय है, तो कर्नेल यह निर्धारित करता है कि वर्तमान में या तो एक स्थानीय डिस्क या दूरस्थ माउंटेड डिस्क (एनएफएस) में कम से कम एक आई / ओ है जो उस सीपीयू से शुरू किया गया था। अगर वहाँ है, तो सीपीयू राज्य में है iowait। यदि उस CPU से प्रगति में कोई I / O नहीं है, तो CPU स्थिति में idleहै।

तो, iowaitCPU निष्क्रिय होने के समय का प्रतिशत है और उस CPU से शुरू की गई प्रगति में कम से कम एक I / O है।

iowaitकाउंटर कहा गया है कि प्रणाली अधिक कम्प्यूटेशनल काम संभाल सकते हैं। सिर्फ इसलिए कि एक सीपीयू iowaitराज्य में है इसका मतलब यह नहीं है कि यह उस सीपीयू पर अन्य थ्रेड या प्रक्रिया नहीं चला सकता है।

तो, iowaitबस निष्क्रिय समय का एक रूप है।


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

इसलिए यह समय की एक बहुत खर्च करता है पूरी तरह से io के लिए इंतजार कर के रूप में एक कार्ड पूरा करने के लिए पढ़ा है। आप इसे ध्वनि की तरह बनाते हैं जैसे कैश मिस को इस "io प्रतीक्षा" (जो निश्चित रूप से गिना नहीं जाता है) द्वारा मापा जा सकता है, आईओ प्रतीक्षा को निम्नानुसार परिभाषित किया गया है: कर्नेल ने निम्न स्तर के उपकरण I / O दिनचर्या के अंदर बिताया है - जैसे आरपीआई, का शाब्दिक रूप से कार्ड से पढ़ने की प्रक्रिया और सीपीयू (डीएमए-कम चंप होना) आईओ बस में डेटा के लिए इंतजार करना पड़ता है। डीएमए कंट्रोलर के साथ, यह कंट्रोलर से बात करता है और कहता है कि "मुझे बताएं कि आप कब काम कर रहे हैं" - इसे अन्य सामान करने के लिए छोड़ दें जबकि डीएमए कंट्रोलर डिवाइस को IO करता है
एलेक टील

IOwaiting BTW को देखने के लिए dstat का उपयोग करें, साथ ही iowait और कर्नेल सामान को करने में बिताया गया समय वास्तव में प्रति-प्रक्रिया को नहीं मापा जा सकता है। जैसे कहते हैं कि "फाइल" के लिए "लिखने" की दो प्रक्रियाएं हैं, पहला जो जल्दी से पूरा हो जाता है, एफएस ने कैश को चुना जो भी कारण के लिए लिखते हैं, दूसरा कैश को फ्लश करने का कारण बनता है, लौटने के लिए अधिक समय गिनना उचित नहीं है। लिखने से लेकर लिखने की प्रक्रिया तक। I / O प्रतीक्षा के साथ समान, यही कारण है कि वे प्रति-प्रक्रिया मापा नहीं है।
एलेक टील

4
@AlecTeal: नहीं, यह सही है और आपकी टिप्पणियां झूठी हैं। iowait I / O पर अवरुद्ध समय की गणना करता है , I / O की सर्विसिंग नहीं । यदि आप कर्नेल स्रोत को पढ़कर इसकी पुष्टि नहीं करना चाहते हैं, तो एक प्रयोग आज़माएं: एक नेटवर्क फ़ाइल सिस्टम को माउंट करें, एक फ़ाइल पढ़ना शुरू करें, और फिर रिमोट मशीन को फ़ायरवॉल करें। आयोवाइट का समय अभी भी अधिक होगा, हालांकि प्रोसेसर पूरी तरह से निष्क्रिय है।
डेविड

1
मैंने इस जवाब पर एक परीक्षण किया। dd if=/dev/sda of=/dev/nullएक उच्च बनाने के लिए wa। फिर एक वास्तविक कोड चलाएँ, waइसके बजाय है us। धन्यवाद अराजकता।
हुवा

-2

मुझे 100% यकीन नहीं है कि मैं इस प्रश्न को समझता हूं, लेकिन कुछ विचार हैं।

यहाँ एक और सवाल है जिसने यह पूछा है, और इसके कुछ अच्छे उत्तर हैं: क्या कोई भी यह स्पष्ट कर सकता है कि IOWait क्या है?

यहाँ एक अच्छी पोस्ट है: http://veithen.github.io/2013/11/18/iowait-linux.html


7
माइक, यह पसंद किया जाता है कि उत्तर में सामग्री शामिल है, न कि केवल सामग्री के लिए लिंक। यहां सामग्री प्रदान करके, आप यह सुनिश्चित कर रहे हैं कि उन लिंक के चले जाने के बाद भी आपके उत्तर का मूल्य है।
EEAA

1
@ ईईएए तो जवाब को संपादित करने की आवश्यकता है, न कि नीचे की ओर तिरछे? या इसे एक टिप्पणी में स्थानांतरित किया जा सकता है। इसमें अभी भी उपयोगी जानकारी है। डाउनवोट्स का मतलब है कि यह जानकारी बेकार है, यह भी लगभग अदृश्य बनाकर? मैं यह नहीं कह रहा हूं कि आपने नीचे किया, मैं यहां लोगों के दृष्टिकोण के बारे में सोच रहा हूं।
रोलैंड पिहलकास

3
@ रोलैंडपिल्लकस यह प्रेरणा की बात है। डाउनवोट + टिप्पणी इस स्थिति में उपयोगकर्ता को अपना उत्तर ठीक करने के लिए प्रेरणा देती है। मैं खुशी से अपने DV हटा देंगे जवाब तय होने के बाद। इनका संपादन प्रति-उत्पादक है, क्योंकि यह बुरे व्यवहार को सक्षम बनाता है। हमारे पास कई ऐसे उपयोगकर्ता हैं जिन्होंने कभी - कभी लिंक-केवल उत्तर पोस्ट किए हैं, इसके बावजूद ऐसा नहीं करने के लिए कहा गया है। यदि उपयोगकर्ता अपने उत्तरों में थोड़ा सा प्रयास करने की जहमत नहीं उठा सकते हैं, तो मैं उनके काम को ठीक करके उनकी मदद करने वाला नहीं हूं।
ईईएए

@EEAA विस्तृत जवाब के लिए धन्यवाद। आपका दृष्टिकोण समझ में आता है और आपकी टिप्पणियों के माध्यम से आप उत्तर के लेखक के लिए प्रेरक कुहनी देते हैं। इसके विपरीत, मुझे डर है कि मूक डाउनवोट ज्यादातर व्यावहारिक प्रेरणा नहीं देते हैं क्योंकि वे अस्पष्ट हैं। लेकिन मैं थोड़ा अड़ियल था - मैं ज्यादातर सोच रहा था कि उत्तर को इतना नीचे क्यों उतारा गया था कि वह निकल गया? एक या दो डाउनवॉट के साथ आपकी टिप्पणी पर्याप्त होनी चाहिए?
रोलैंड पिहलकास

2
@ रोलैंडपाइलाकास लोगों को लगा कि उत्तर उपयोगी नहीं था, इसलिए उन्होंने इसे अस्वीकार कर दिया। वे मंगलवार को समाप्त हो गए क्योंकि उन्होंने डाउनवोट किया क्योंकि आज मिनियापोलिस में बर्फबारी हो रही है (वास्तव में, यह है, और वसंत में यह देर से नहीं होना चाहिए)। कौन जाने।
EEAA
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.