लिनक्स - मैं कैसे देख सकता हूं कि डिस्क IO का क्या इंतजार है


42

मेरे पास एक सर्वर है जो वास्तव में उच्च भार है। सीपीयू के उपयोग के मामले में कुछ भी मेरे बारे में नहीं कह रहा है, और यह स्वैपिंग नहीं है।

मुझे लगता है कि यह डिस्क IO की प्रतीक्षा कर रही कुछ प्रक्रियाओं का कारण है, और मैं देखना चाहता हूं कि क्या इंतजार कर रहा है।

क्या कोई कार्यक्रम है जो मुझे दिखाएगा कि IO के लिए क्या प्रक्रियाएँ हैं? मुझे इसके बारे में पता है, iotopलेकिन पता चलता है कि वर्तमान में IO क्या कर रहा है।

या यह एक मूर्खतापूर्ण सवाल है? (यदि ऐसा है तो कैसे समझाएं :))

जवाबों:


47

आप iotop की तरह I / O मॉनिटर का उपयोग कर सकते हैं, लेकिन यह आपको वर्तमान I / O संचालन के साथ केवल प्रक्रियाएँ या थ्रेड दिखाएगा।

यदि आपको I / O की प्रतीक्षा करने वाली प्रक्रियाओं को ब्राउज़ करने की आवश्यकता है, तो नीचे दिए गए STAT ध्वज 'D' के साथ प्रक्रियाओं की निगरानी करने के लिए घड़ी का उपयोग करें:

watch -n 1 "(ps aux | awk '\$8 ~ /D/  { print \$0 }')"

मिठाई। इससे मुझे अच्छी तरह से मदद मिली।
स्टु थॉम्पसन

2
वैकल्पिक रूप से, आप-iotop -o ’कमांड का उपयोग कर सकते हैं जो केवल otop /help के अनुसार th प्रक्रियाओं / थ्रेड्स वास्तव में I / O’ दिखाएगा।
रेयान

1
@ आर्यन इसके अलावा अपेक्षित जानकारी की आपूर्ति नहीं करते iowait, इसके iotopलिए उन्नत विशेषाधिकार की आवश्यकता होती है। watch, psऔर awkकेवल अपेक्षित जानकारी दे, और उन्नत विशेषाधिकार की आवश्यकता नहीं है।
रिच

4
मैंने psPOSIX झंडे का इस्तेमाल किया होगा और awkइसे अलग watch "(ps -eo stat,pid,comm|awk '(NR==1)||(\$1~/D/){print}')"तरीके से संपादित किया होगा: - इस तरह आपको कॉलम हेडिंग, और स्टेट, पीड, और कमांड मिलेगा।
रिच

18

ps axuऔर प्रक्रियाओं के लिए देखो जो "डी" राज्य में हैं। पीएस (1) मैनपेज के आधार पर , डी अवस्था में होने वाली प्रक्रियाएं निर्बाध नींद में होती हैं, जिसका अर्थ हमेशा 'आईओ की प्रतीक्षा करना' होता है। दुर्भाग्य से, इन प्रक्रियाओं को मारना आमतौर पर संभव नहीं है।


16

ज़ोन्ची का जवाब सबसे अच्छा है मुझे पता है कि आईओ का इंतजार क्या है।

जब आप कहते हैं कि आपका सर्वर उच्च भार के अधीन है, तो आपका क्या मतलब है? विशेष रूप से कुछ प्रतिक्रिया करने के लिए धीमा है?

यदि आप सोच रहे हैं कि क्या आपका डिस्क IO अड़चन है, तो मैं यह देखने के लिए iostat कमांड (sysstat पैकेज का हिस्सा) का उपयोग करेगा कि क्या डिस्क वास्तव में भारी लोड के तहत है।

उदाहरण:

[kbrandt@kbrandt-opadmin: ~] iostat -x 1 3                                                                                           

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           2.38   34.71    2.64    1.18    0.00   59.21 
Device:         rrqm/s   wrqm/s     r/s     w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util
sda               0.11    17.35    2.21   20.31    46.57   301.40    15.45     2.27  100.66   1.48   3.34
sda1              0.10    17.31    2.21   20.31    46.48   301.10    15.44     2.27  100.66   1.48   3.34
sda2              0.00     0.00    0.00    0.00     0.00     0.00     3.50     0.00   30.00  30.00   0.00
sr0               0.00     0.00    0.00    0.00     0.00     0.00    18.44     0.00  677.67 512.61   0.00

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           6.22    0.00    4.31    0.00    0.00   89.47   
Device:         rrqm/s   wrqm/s     r/s     w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util
sda               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
sda1              0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
sda2              0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
sr0               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00

1
यह समझाने में मददगार होगा कि आईओस्टाट के आउटपुट की व्याख्या कैसे करें "यह देखने के लिए कि क्या डिस्क वास्तव में भारी लोड के तहत है।"
स्कॉट बुकानन

0

ब्लॉक की जाने वाली लॉगिंग को सक्षम करें कि क्या प्रक्रियाएं ब्लॉक रीड / राइट ऑपरेशन कर रही हैं:

echo 1 > /proc/sys/vm/block_dump
tail -f /var/log/syslog

जब किया जाता है, तो ट्रेसिंग को अक्षम करें ताकि आप अपनी लॉग फ़ाइलों को स्पैम न करें:

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