यह निर्धारित करना कि कौन सी प्रक्रिया भारी डिस्क I / O का कारण बन रही है?


19

मैंने यह प्रश्न देखा है: डिस्क पर भारी लिखने की पहचान कैसे करें?

और मैंने पहले dstat और atop का उपयोग किया है ... लेकिन वे यह नहीं समझते कि डिस्क I / O किस प्रक्रिया का कारण बन रही है। उदाहरण के लिए, dstat से:

dstat -ta --top-bio
----system---- ----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system-- ----most-expensive----
     time     |usr sys idl wai hiq siq| read  writ| recv  send|  in   out | int   csw |  block i/o process
14-12 16:16:25| 22   3  49  26   0   0|2324k    0 |  17k 6144B|   0     0 |1324     0 |
14-12 16:16:26| 24   3  30  43   0   0|4960k 8192B|1498B 4322B|   0     0 |1494     0 |wget          0  4096B
14-12 16:16:27| 25   4  38  33   0   0|4612k  548k|5011B   27k|   0     0 |1582     0 |kjournald     0    24k
14-12 16:16:28| 23   3  42  32   0   0|5072k    0 |  24k 4368B|   0     0 |1495     0 |

सूचना कैसे उच्च dsk / कुल है - 2 और 5 एमबी / सेकंड के बीच। लेकिन फिर 'सबसे महंगे' कॉलम को देखें - यह केवल एक युगल बाइट्स है यहां, एक युगल KB, और कभी-कभी कुछ भी नहीं। यह 'परमाणु' के साथ समान है। उच्च समग्र डिस्क उपयोग दिखाता है, लेकिन व्यक्तिगत प्रक्रियाओं से कम उपयोग। मैं CentOS 5 चला रहा हूँ, कर्नेल 2.6.18-53।

क्या मुझे एक नए कर्नेल संस्करण की आवश्यकता है? हो सकता है कि कुछ सिस्टम कॉन्फिगर करना कहीं से सेट हो? 'टॉप' होमपेज कुछ कर्नेल पैच स्थापित करने की सलाह देता है, लेकिन मैं अपनी कर्नेल को कॉन्फ़िगर करने और संकलित करने की परेशानी से नहीं गुजरूंगा।

जवाबों:


26

स्टार्टर के लिए iotop ( लिंक );) मैंने आपको इसका एक आउटपुट पोस्ट करते नहीं देखा है।

1: मैंने लॉगिंग फाइलसिस्टम और एनीमे के साथ लगभग एक ही स्थिति का अनुभव किया है - हालांकि अधिक लिखता है।

Noatime के साथ रिमाउंट करने की कोशिश करें और फाइलसिस्टम लॉगिंग को बंद करें (बाद में केवल परीक्षण के लिए) यह देखने के लिए कि क्या यह फाइलसिस्टम आधारित है और जैसा कि कहा गया है, अगर यह प्रक्रिया आधारित है तो iotop।

2: मुझे लगता है कि यह विभाजन सिर्फ एक पुनर्निर्माण पुनर्निर्माण छापे का हिस्सा नहीं है, क्या यह है?

3: यदि आपके पास बहुत छोटी फाइलें हैं (वास्तविक ब्लॉक डिवाइस की तुलना में बहुत छोटी हैं और / या फाइलसिस्टम को अवरुद्ध करता है), और आप उन छोटी फाइलों को पढ़ रहे हैं, तो आप सिस्टम से पूरे ब्लॉक को पढ़ते हैं, और अधिकांश उन ब्लॉकों को कुछ नहीं के लिए पढ़ा जाएगा।

4: यदि ऊपर कुछ भी मदद नहीं करता है, तो आप हमेशा निष्पादित करके फ़ाइलों की सूची प्राप्त कर सकते हैं

echo 1 > /proc/sys/vm/block_dump

कृपया ध्यान दें कि यह सिस्टम प्रदर्शन को बहुत कम कर देता है। मेरे पिछले पोस्ट में यहाँ निर्देश उपलब्ध हैं


1
मुझे लगभग 5 सेकंड के साथ मारो;) +1
पीहर

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