सवाल क्या कोई भी ठीक से बता सकता है कि IOWait क्या है?


जितना मैंने iowait के बारे में पढ़ा है, यह अभी भी मेरे लिए रहस्य है।

मुझे पता है कि सीपीयू द्वारा आईओ ऑपरेशंस को पूरा करने के लिए इंतजार कर रहा समय है, लेकिन आईओ ऑपरेशंस किस तरह से ठीक है? मुझे यह भी यकीन नहीं है, यही कारण है कि यह इतना महत्वपूर्ण है? आईओ ऑपरेशन पूरा होने पर सीपीयू बस कुछ और नहीं कर सकता है, और फिर डेटा प्रोसेसिंग पर वापस आ सकता है?

यह भी निदान करने के लिए सही उपकरण क्या हैं कि किस प्रक्रिया (एस) ने आईओ के लिए बिल्कुल इंतजार किया था।

और IO प्रतीक्षा समय को कम करने के तरीके क्या हैं?


170
2018-05-27 09:52


मूल


और भी, उच्च iowait क्या है? - Muhamed Huseinbašić


जवाब:


मुझे पता है कि यह सीपीयू द्वारा बिताया गया समय है   एक आईओ संचालन के लिए इंतजार कर रहा है   पूरा, लेकिन किस तरह का आईओ   संचालन ठीक है? मैं भी क्या हूँ   यकीन नहीं, यही कारण है कि यह इतना महत्वपूर्ण है?   सीपीयू बस कुछ और नहीं कर सकता है   जबकि आईओ ऑपरेशन पूरा करता है, और   फिर डेटा प्रोसेसिंग पर वापस आ जाओ?

हां, ऑपरेटिंग सिस्टम आईओ पर अवरुद्ध होने पर अन्य प्रक्रियाओं को चलाने के लिए शेड्यूल करेगा। हालांकि उस प्रक्रिया के अंदर, जब तक यह एसिंक्रोनस आईओ का उपयोग नहीं कर लेता है, तब तक यह प्रगति नहीं करेगा जब तक कि जो भी आईओ ऑपरेशन पूरा न हो जाए।

इसके अलावा सही उपकरण क्या हैं   निदान करें कि किस प्रक्रिया (एस) ने वास्तव में किया था   आईओ के लिए प्रतीक्षा करें।

कुछ टूल जो आपको उपयोगी मिल सकते हैं

  • iostat, अपने डिस्क के सेवा के समय की निगरानी करने के लिए
  • iotop (यदि आपका कर्नेल इसका समर्थन करता है), प्रति प्रक्रिया आईओ अनुरोधों के टूटने की निगरानी करने के लिए
  • strace, एक प्रक्रिया द्वारा जारी वास्तविक संचालन को देखने के लिए

और आईओ को कम करने के तरीके क्या हैं   प्रतीक्षा समय?

  • सुनिश्चित करें कि आपके पास मुफ्त भौतिक स्मृति है ताकि ओएस स्मृति में डिस्क ब्लॉक को कैश कर सके
  • अत्यधिक विखंडन से बचने के लिए अपने फाइल सिस्टम डिस्क उपयोग को 80% से नीचे रखें
  • अपने फाइल सिस्टम को ट्यून करें
  • एक बैटरी समर्थित सरणी नियंत्रक का उपयोग करें
  • आईओ ऑपरेशंस करते समय अच्छा बफर आकार चुनें

90
2018-05-27 10:28



भूलें "सुनिश्चित करें कि आपका बैकएंड स्टोरेज आपके आई / ओ लोड के साथ बनाए रखने के लिए पर्याप्त तेज़ है।" - jgoldschrafe
@ डेव चेनी, और जब मेरी प्रक्रिया निष्क्रिय है क्योंकि यह आईओ पर इंतजार कर रही है। तो IOWait और निष्क्रिय के बीच क्या अंतर है? - ctrl-alt-delor
जब IOwait में, प्रक्रिया डिस्क पर डेटा दूषित करने के जोखिम से बचने के लिए, "अनियंत्रित नींद" में है जिसका अर्थ है कि इसे मार नहीं किया जा सकता है। एक सामान्य निष्क्रिय प्रक्रिया वास्तव में कुछ भी नहीं कर रही है, इसलिए इसे कम करने के जोखिम कम हैं। - mveroone
व्यावहारिक रूप से इसका मतलब है कि आपका आईओ बहुत धीमा है। "सर्वर को तेज़ी से बनाएं" अलग है चाहे आप सीपीयू सीमित हैं या आपका सीपीयू भूख से मर रहा है क्योंकि किसी ने तय किया है कि धीमी नोटबुक डिस्क डेटाबेस सर्वर चलाने के लिए पर्याप्त है और आईओ लोड सीपीयू को केवल 2% का उपयोग कर सकता है, खत्म करने के लिए आईओ के लिए पागल। - TomTom
ओएमजी मैं विश्वास नहीं कर सकता कि यहां शीर्ष 3 उत्तरों हैं गलत। Haridsv द्वारा नीचे जवाब सही है। आईओ को पूरा करने के लिए कोई सीपीयू "प्रतीक्षा" नहीं कर रहा है। हां, कुछ आईओ अवरुद्ध हो सकते हैं - अक्सर इसके लिए एक अच्छा कारण है, और कुछ परिस्थितियों में सभी आईओ अवरुद्ध हो सकते हैं। लेकिन आप पूरी तरह से एसिंक्रोनस ऑपरेशंस के लिए आईओवेट भी देख सकते हैं। - symcbean


पुराना सवाल, हाल ही में टक्कर लगी, लेकिन महसूस किया कि मौजूदा उत्तर अपर्याप्त थे।

IOWait परिभाषा और गुण

IOWait (आमतौर पर लेबल किया गया %wa शीर्ष में) निष्क्रिय की उप-श्रेणी है (%idle आमतौर पर परिभाषित उपश्रेणियों को छोड़कर सभी निष्क्रिय के रूप में व्यक्त किया जाता है), जिसका अर्थ है कि सीपीयू कुछ भी नहीं कर रहा है। इसलिए, जब तक एक और प्रक्रिया है कि सीपीयू प्रसंस्करण हो सकता है, यह ऐसा करेगा। इसके अतिरिक्त, निष्क्रिय, उपयोगकर्ता, सिस्टम, iowait, आदि सीपीयू के संबंध में एक माप हैं। दूसरे शब्दों में, आप Ioait के बारे में सोच सकते हैं क्योंकि आईओ के इंतजार के कारण निष्क्रिय है।

निश्चित रूप से, iowait प्रोसेसर टिक के प्रतिशत के रूप में हार्डवेयर इंटरप्ट को प्राप्त करने और संभालने में समय बिताया गया है। सॉफ़्टवेयर इंटरप्ट आमतौर पर अलग-अलग होते हैं %si

महत्व और संभावित गलत धारणा

IOWait महत्वपूर्ण है क्योंकि यह जानने के लिए अक्सर एक महत्वपूर्ण मीट्रिक है कि क्या आप आईओ पर बाधित हैं। लेकिन iowait की अनुपस्थिति का मतलब यह नहीं है कि आपका आवेदन है नहीं आईओ पर बाधा डाली सिस्टम पर चल रहे दो अनुप्रयोगों पर विचार करें। यदि प्रोग्राम 1 भारी आईओ बाधित है और प्रोग्राम 2 एक भारी CPU उपयोगकर्ता है, तो %user + %system सीपीयू अभी भी ~ 100% की तरह कुछ हो सकता है और संगत रूप से, iowait 0 दिखाएगा। लेकिन ऐसा इसलिए है क्योंकि प्रोग्राम 2 गहन है और अपेक्षाकृत प्रोग्राम 1 के बारे में कुछ भी नहीं कहता है क्योंकि यह सब सीपीयू के दृष्टिकोण से है।

IOWait का पता लगाने के लिए उपकरण

डेव चेनी और जेरेक्स द्वारा पोस्ट देखें

लेकिन यह भी एक साधारण है top में दिखाएगा %wa

IOWait को कम करना

साथ ही, जैसा कि हम अब 2013 में प्रवेश कर रहे हैं, अन्य लोगों के अलावा, बस भयानक आईओ स्टोरेज डिवाइस का विकल्प सस्ती है, अर्थात् एसएसडी। एसएसडी भयानक हैं !!!


44
2017-12-25 12:45





iowait

iowait वह समय है जब प्रोसेसर / प्रोसेसर इंतजार कर रहे हैं (यानी एक में है निष्क्रिय अवस्था और हो गया कुछ भी तो नहीं), जिसके दौरान वास्तव में वहाँ था बकाया डिस्क I / O अनुरोध।

इसका आमतौर पर मतलब है कि ब्लॉक डिवाइस (यानी भौतिक डिस्क, स्मृति नहीं) बहुत धीमी है, या बस संतृप्त है।

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

उपकरण

  • sar (वहाँ से sysstat पैकेज, अधिकांश * निक्स मशीनों पर उपलब्ध)
  • iostat
  • sarface (एक फ्रंट एंड टू sar)

34
2018-05-27 10:32



ध्यान दें कि कड़ाई से बोलते हुए, I / O प्रतीक्षा समय की परिभाषा केवल एकल प्रोसेसर सिस्टम पर मान्य है। बहु-प्रोसेसर सिस्टम के लिए इसे कुछ हद तक परिष्कृत करने की आवश्यकता है: veithen.blogspot.be/2013/11/iowait-linux.html - Andreas Veithen
किस हद तक iowait को प्रभावित करता है Load Average? कहें, 100 धागे नेटवर्क की प्रतीक्षा कर रहे हैं, एलए 100 होगा? - Ivan Balashov


मैंने इस लिंक से स्पष्टीकरण और उदाहरण बहुत उपयोगी पाया: "Iowait" वास्तव में क्या है?। बीटीडब्लू, पूर्णता के लिए, I / O यहां डिस्क I / O को संदर्भित करता है, लेकिन इसमें नेटवर्क माउंट डिस्क (जैसे एनएफएस) पर I / O भी शामिल हो सकता है, जैसा कि समझाया गया है यह अन्य पोस्ट

मैं कुछ महत्वपूर्ण वर्गों को उद्धृत करूंगा (यदि लिंक मर जाता है), उनमें से कुछ दूसरों के पहले से क्या कह चुके हैं, इसकी दोहराव होगी, लेकिन कम से कम ये स्पष्ट थे:

इसे एक वाक्य में सारांशित करने के लिए, 'iowait' समय का प्रतिशत है   सीपीयू निष्क्रिय है और कम से कम एक I / O प्रगति पर है।

प्रत्येक सीपीयू चार राज्यों में से एक में हो सकता है: उपयोगकर्ता, sys, निष्क्रिय, iowait।

मैं सोच रहा था कि क्या होता है जब सिस्टम में अन्य प्रक्रियाएं चलाने के लिए तैयार होती हैं जबकि एक प्रक्रिया I / O की प्रतीक्षा कर रही है। नीचे बताता है:

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

और यहां एक उदाहरण है:

मान लें कि सीपीयू पर दो प्रोग्राम चल रहे हैं। एक 'डीडी' है   डिस्क से प्रोग्राम पढ़ने। दूसरा एक ऐसा कार्यक्रम है जो I / O नहीं करता है   लेकिन कम्प्यूटेशनल काम कर अपने 100% समय व्यतीत कर रहा है। अब मान लीजिए   कि आई / ओ उपप्रणाली और भौतिक I / Os के साथ कोई समस्या है   पूरा करने के लिए एक सेकंड ले रहे हैं। जब भी 'डीडी' कार्यक्रम है   अपने आई / ओएस को पूरा करने के लिए इंतजार करते समय सो, दूसरा कार्यक्रम है   उस सीपीयू पर चलाने में सक्षम। जब घड़ी बाधा होती है, तो वहां होगा   हमेशा उपयोगकर्ता मोड या सिस्टम मोड में चल रहे प्रोग्राम बनें।   इसलिए,% निष्क्रिय और% iowait मान 0 होगा। हालांकि iowait   अब 0 है, इसका मतलब यह नहीं है कि वहाँ I / O समस्या नहीं है क्योंकि वहां   स्पष्ट रूप से एक है यदि भौतिक I / Os एक दूसरे से अधिक ले रहे हैं   पूर्ण।

पूरा पाठ पढ़ने लायक है। यहां है इस पृष्ठ का दर्पण, अगर यह नीचे चला जाता है।


27
2018-05-27 12:34





सोलारिस के लिए, मैं यह देखने के लिए डीटीआर का उपयोग करता हूं कि प्रक्रियाओं को क्या करना है यदि मुझे यह देखने की ज़रूरत है कि I / O संचालन क्या चल रहा है। लिनक्स के लिए, एक समान कार्यक्रम कहा जाता है systemtap जो कर्नेल और प्रक्रिया कॉल के संपर्क के समान स्तर प्रदान करता है।

डीटीआर सीखने के दौरान मैंने एक उदाहरण का इस्तेमाल किया था cp ए के लिए आदेश dd आदेश। आप वह देख सकते हैं dd लेखन के लिए बहुत कुछ पढ़ता है, जबकि cp ज्यादातर, बफर आकार की वजह से नहीं है dd डिफ़ॉल्ट रूप से उपयोग करता है (अगर मैं सही ढंग से याद कर रहा हूं)।


1
2018-05-27 10:01





किस प्रकार का आईओ ऑपरेशंस आपके अनुप्रयोगों और सेटअप पर निर्भर करेगा।

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

आईओ समय को कम करने के लिए, अधिक तेज़ मेमोरी खरीदें, तेजी से डिस्क प्राप्त करें, आपके पास डिस्क डिफ्रैग करें।

यदि यह एक घर में आवेदन है जो बाधा है तो देखें कि क्या इसे बड़े ब्लॉक में पढ़ने या IO को असंकालिक रूप से करने के लिए अनुकूलित किया जा सकता है।


0
2018-01-01 15:50



ठीक है, तो iowait एक समय में बिताया है अवरुद्ध आईओ ऑपरेशन? - Peter Krumins
तो उदाहरण के लिए, यदि मैं एक चुनिंदा () या मतदान () और यह ब्लॉक करता हूं, तो एक वर्णक तक प्रतीक्षा करने का समय iowait समय के लिए होगा? - Peter Krumins
मुझे लगता है कि यह एसओ पर होगा क्योंकि यह प्रोग्रामिंग प्रश्न की तरह दिखता है। - Jeremy French
पीटरिस - हाँ, यह इसके बारे में सोचने का एक अच्छा तरीका है। - user2278


पीएस ऑक्स का उपयोग प्रक्रिया प्रक्रिया मुद्रित कर सकते हैं
यदि स्टेट डी या डीएस है, तो प्रक्रिया अनियंत्रित नींद में होती है (आमतौर पर आईओ)
जब कोई प्रक्रिया अनइंटरप्टेबल नींद में प्रवेश करती है, तो रनक्यू के nr_iowait को जोड़ा जाता है, और यदि nr_iowait> 0, cpu का निष्क्रिय समय iowait पर गिना जाता है

vmstat यह भी दिखाता है कि कितने प्रक्रिया ब्लॉक
आर: रन टाइम के लिए इंतजार कर रहे प्रक्रियाओं की संख्या।
बी: अनियंत्रित नींद में प्रक्रियाओं की संख्या।

http://bencane.com/2012/08/06/troubleshooting-high-io-wait-in-linux/


0