मैं iowait
शीर्ष उपयोगिता आउटपुट में दिखाए गए गुण को नीचे दिखाए गए अनुसार देख रहा हूं ।
top - 07:30:58 up 3:37, 1 user, load average: 0.00, 0.01, 0.05
Tasks: 86 total, 1 running, 85 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.3 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
iowait
आम तौर पर निम्नानुसार परिभाषित किया जाता है:
"यह वह समय है जिसके दौरान CPU निष्क्रिय है और कुछ IO लंबित है।"
यह मेरी समझ है कि एक प्रक्रिया एक ही सीपीयू पर चलाई जाती है। डी-शेड्यूल्ड हो जाने के बाद या तो इसने अपने टाइम स्लॉट का उपयोग किया है या ब्लॉक होने के बाद, इसे अंततः किसी एक सीपीयू पर फिर से शेड्यूल किया जा सकता है।
आईओ अनुरोध के मामले में, एक सीपीयू जो एक प्रक्रिया को निर्बाध नींद में रखता है, iowait
समय पर नज़र रखने के लिए जिम्मेदार है । अन्य सीपीयू उनके अंत के निष्क्रिय समय के समान ही रिपोर्ट कर रहे होंगे क्योंकि वे वास्तव में निष्क्रिय हैं। क्या यह धारणा सही है?
इसके अलावा, यह मानते हुए कि एक लंबा IO अनुरोध है (जिसका अर्थ है कि प्रक्रिया में अनुसूचित होने के कई अवसर थे, लेकिन IO पूरा नहीं होने के कारण अनुसूचित नहीं हुआ), CPU को कैसे पता चलता है कि "लंबित IO" है? उस तरह की जानकारी कहां से प्राप्त की गई है? एक सीपीयू बस कैसे पता लगा सकता है कि एक आईओ को पूरा करने के लिए कुछ समय सोने के लिए कुछ प्रक्रिया रखी गई थी क्योंकि कोई भी सीपीयू उस प्रक्रिया को सोने के लिए डाल सकता था। "लंबित आईओ" की इस स्थिति की पुष्टि कैसे की जाती है?