जवाबों:
इसका अर्थ है "फ़ाइल I / O" की प्रतीक्षा करना, कहने के लिए, किसी फ़ाइल पर कॉल पढ़ने / लिखने के लिए जो माउंटेड फ़ाइल सिस्टम में है, लेकिन संभवत: वह समय गिनता है जो मेमोरी में या डिमांड-लोड पेजों में स्वैप करने की प्रतीक्षा कर रहा है, जैसे लाइब्रेरी नहीं स्मृति में अभी तक, या mmap () की फ़ाइलें जो राम में नहीं हैं।
यह आईपीसी ऑब्जेक्ट्स जैसे सॉकेट्स, पाइप्स, टैटी, सलेक्ट (), पोल (), स्लीप (), पॉज़ () आदि के लिए इंतज़ार कर रहे समय की गणना नहीं करता है।
मूल रूप से यह समय है कि एक थ्रेड सिंक्रोनस डिस्क-आईओ के लिए इंतजार कर रहा है - इस समय के दौरान यह सैद्धांतिक रूप से चलने में सक्षम है, लेकिन ऐसा नहीं कर सकता क्योंकि कुछ डेटा की आवश्यकता अभी तक नहीं है। ऐसी प्रक्रियाएं आमतौर पर "डी" स्थिति में दिखाई देती हैं और एक बॉक्स के लोड औसत में योगदान करती हैं।
भ्रामक रूप से मुझे लगता है कि इसमें नेटवर्क फाइल सिस्टम पर फ़ाइल IO शामिल है।
आयोवाइट समय एक प्रक्रिया है जो कर्नेल I / O अनुसूचक में खर्च होती है। जहाँ तक मुझे पता है, इसका नेटवर्क I / O के साथ कोई लेना-देना नहीं है क्योंकि नियमित सॉकेट कनेक्शन चलते हैं। हालांकि, इसमें एनएफएस जैसे नेटवर्क फ़ाइल सिस्टम के लिए प्रतीक्षा समय शामिल होगा।
ऐसा होता है।
संयोग से, जिन सर्वरों का मैं प्रबंधन करता हूं उनमें से एक उच्च आयोवाइट का अनुभव कर रहा है जो खराब एनएफएस माउंट के कारण होता है।
top - 06:19:03 up 14 days, 10:15, 3 users, load average: 9.67, 11.83, 12.31
Tasks: 135 total, 1 running, 134 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.2%us, 0.2%sy, 0.0%ni, 0.0%id, 99.7%wa, 0.0%hi, 0.0%si, 0.0%st
top - 06:22:55 up 14 days, 10:19, 3 users, load average: 10.58, 11.13, 11.89
Tasks: 137 total, 1 running, 136 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.0%us, 0.2%sy, 0.0%ni, 0.0%id, 99.8%wa, 0.0%hi, 0.0%si, 0.0%st
और D
राज्य में प्रक्रियाओं को देखें ।
root 27011 0.0 0.0 0 0 ? S 03:12 0:00 [nfsd4]
root 27012 0.0 0.0 0 0 ? S 03:12 0:00 [nfsd4_callbacks]
root 27013 0.0 0.0 0 0 ? D 03:12 0:01 [nfsd]
root 27014 0.0 0.0 0 0 ? D 03:12 0:01 [nfsd]
root 27015 0.0 0.0 0 0 ? D 03:12 0:01 [nfsd]
root 27016 0.0 0.0 0 0 ? D 03:12 0:01 [nfsd]
Iowait में नेटवर्क कॉल शामिल हैं। मैं यह कहता हूं, क्योंकि कर्नेल के दृष्टिकोण से NFS को कई लिनक्स स्थानीय फाइल सिस्टम के रूप में संभाला जाता है:
$ vim linux-2.6.38.2/fs/nfs/file.c
const struct file_operations nfs_file_operations = {
.llseek = nfs_file_llseek,
.read = do_sync_read,
.write = do_sync_write,
.aio_read = nfs_file_read,
.aio_write = nfs_file_write,
.mmap = nfs_file_mmap,
.open = nfs_file_open,
.flush = nfs_file_flush,
.release = nfs_file_release,
.fsync = nfs_file_fsync,
.lock = nfs_lock,
.flock = nfs_flock,
.splice_read = nfs_file_splice_read,
.splice_write = nfs_file_splice_write,
.check_flags = nfs_check_flags,
.setlease = nfs_setlease,
};
जब प्रक्रियाएं फाइल डिस्क्रिप्टर 5 पर लिखती हैं, तो ऐसा कुछ होगा:
files->fd_array[5]->f_op->write(argv.......)
इसलिए, प्रक्रियाओं को यह नहीं पता है कि किस तरह की फाइलसिस्टम का उपयोग किया जा रहा है (vfs मैजिक) और iowait एक स्थानीय फाइल सिस्टम के समान है।