क्या iowait में नेटवर्क कॉल की प्रतीक्षा में समय शामिल है?


19

proc(5)मैनपेज "पूरा करने के लिए आईओ के लिए समय प्रतीक्षा" के रूप में iowait वर्णन करता है। यह ज्यादातर पहले के एक प्रश्न में समझाया गया था । मेरा प्रश्न है: IO को अवरुद्ध करने में प्रतीक्षा करते समय, क्या इसमें अवरुद्ध नेटवर्क IO, या केवल स्थानीय IO पर प्रतीक्षा शामिल है?

जवाबों:


20

इसका अर्थ है "फ़ाइल I / O" की प्रतीक्षा करना, कहने के लिए, किसी फ़ाइल पर कॉल पढ़ने / लिखने के लिए जो माउंटेड फ़ाइल सिस्टम में है, लेकिन संभवत: वह समय गिनता है जो मेमोरी में या डिमांड-लोड पेजों में स्वैप करने की प्रतीक्षा कर रहा है, जैसे लाइब्रेरी नहीं स्मृति में अभी तक, या mmap () की फ़ाइलें जो राम में नहीं हैं।

यह आईपीसी ऑब्जेक्ट्स जैसे सॉकेट्स, पाइप्स, टैटी, सलेक्ट (), पोल (), स्लीप (), पॉज़ () आदि के लिए इंतज़ार कर रहे समय की गणना नहीं करता है।

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

भ्रामक रूप से मुझे लगता है कि इसमें नेटवर्क फाइल सिस्टम पर फ़ाइल IO शामिल है।


एनएफएस के रूप में आईओ फ़ाइल है मैं / हे भी, मुझे लगता है तुम ठीक कह रहे ;-)
wzzrd

लूपबैक इंटरफेस के बारे में क्या? लिनेक्स इस तरह के इंटरफेस का इलाज कैसे करता है?
जलाल मोस्तफा

3

आयोवाइट समय एक प्रक्रिया है जो कर्नेल I / O अनुसूचक में खर्च होती है। जहाँ तक मुझे पता है, इसका नेटवर्क I / O के साथ कोई लेना-देना नहीं है क्योंकि नियमित सॉकेट कनेक्शन चलते हैं। हालांकि, इसमें एनएफएस जैसे नेटवर्क फ़ाइल सिस्टम के लिए प्रतीक्षा समय शामिल होगा।


2

ऐसा होता है।

संयोग से, जिन सर्वरों का मैं प्रबंधन करता हूं उनमें से एक उच्च आयोवाइट का अनुभव कर रहा है जो खराब एनएफएस माउंट के कारण होता है।

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]

2

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 एक स्थानीय फाइल सिस्टम के समान है।

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