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


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

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

क्या कोई ऐसा कार्यक्रम है जो मुझे दिखाएगा कि आईओ के लिए कौन सी प्रक्रियाएं इंतजार कर रही हैं? मुझे इसके बारे में मालूम है iotop लेकिन यह दिखाता है कि वर्तमान में आईओ क्या कर रहा है।

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


38
2017-09-02 13:32


मूल




जवाब:


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

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

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

43
2017-09-02 14:00



मिठाई। इससे मुझे अच्छी तरह से मदद मिली। - Stu Thompson
वैकल्पिक रूप से, आप 'iotop -o' कमांड का उपयोग कर सकते हैं जो iotop --help के अनुसार केवल 'प्रक्रियाओं या धागे वास्तव में I / O' दिखाएगा। - Ryan
@Ryan इसके अलावा नहीं आवश्यक आपूर्ति iowait जानकारी, iotop उन्नत विशेषाधिकारों की आवश्यकता है। watch, ps, तथा awk केवल आवश्यक जानकारी दें, और उन्नत विशेषाधिकारों की आवश्यकता नहीं है। - Rich
मैं इस्तेमाल होता psपॉसिक्स झंडे और awkइसे अलग-अलग संपादित करें: watch "(ps -eo stat,pid,comm|awk '(NR==1)||(\$1~/D/){print}')" - इस तरह आप कॉलम शीर्षलेख, और स्टेट, पिड, और कमांड प्राप्त करते हैं। - Rich


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


16
2017-09-02 13:36





आईएनओ की प्रतीक्षा में क्या पता चल रहा है यह जानने के लिए ज़ैन्सी का जवाब सबसे अच्छा है।

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

यदि आप सोच रहे हैं कि क्या आपका डिस्क आईओ बाधा है, तो मैं यह देखने के लिए कि वास्तव में डिस्क भारी लोड के तहत 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

14
2017-09-02 13:42



Iostat के आउटपुट की व्याख्या करने के तरीके को समझाने में मदद मिलेगी "यह देखने के लिए कि डिस्क वास्तव में भारी भार में है या नहीं।" - Scott Buchanan


सक्षम करें block_dump ब्लॉक प्रक्रियाओं को लिखने / लिखने के लिए कौन सी प्रक्रियाएं कर रही हैं:

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

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

echo 0 > /proc/sys/vm/block_dump

0
2017-12-29 21:20