क्या "डु" प्रोग्राम को कम आक्रामक बनाया जा सकता है?


21

हमारे पास एक नियमित काम है जो duकई उपनिर्देशिकाओं के सारांश करता है , सबसे खराब अपराधियों को उठाता है, और आउटपुट का उपयोग करके यह पता लगाता है कि क्या ऐसी चीजें हैं जो संभावित समस्याओं को हल करने के लिए तेजी से बढ़ रही हैं। हम diffउनकी तुलना करने के लिए स्नैपशॉट के खिलाफ उपयोग करते हैं।

एक शीर्ष स्तर की निर्देशिका है, जिसमें उपनिर्देशिका की संख्या (कुछ सौ) होती है, जिनमें से प्रत्येक में प्रत्येक (या अधिक) में से हजारों की हजारों फाइलें हो सकती हैं।

du -sइस संदर्भ में एक " " बहुत आईओ आक्रामक हो सकता है, जिससे हमारा सर्वर अपने कैश को जमानत दे सकता है और फिर बड़े पैमाने पर आईओ स्पाइक्स जो एक बहुत ही अप्रिय पक्ष प्रभाव हैं।

अवांछित दुष्प्रभावों के बिना, समान डेटा प्राप्त करने के लिए किस रणनीति का उपयोग किया जा सकता है?


9
जर्मनी में, आप इसे "सीयू" से बदल सकते हैं।
फेडेरिको पोलोनी

जवाबों:


28

देख लेना ionice। से man ionice:

यह प्रोग्राम सेट करता है या किसी कार्यक्रम के लिए io शेड्यूलिंग क्लास और प्राथमिकता प्राप्त करता है। यदि कोई तर्क या जस्ट-पी नहीं दिया जाता है, तो आयनिस वर्तमान io शेड्यूलिंग क्लास और उस प्रक्रिया के लिए प्राथमिकता को क्वेरी करेगा।

du"निष्क्रिय" I / O वर्ग के साथ चलने के लिए, जो सबसे कम प्राथमिकता उपलब्ध है, आप कुछ इस तरह से कर सकते हैं:

ionice -c 3 du -s

इसे duअन्य प्रक्रिया 'I / O' के साथ हस्तक्षेप करने से रोकना चाहिए । आप अपनी सीपीयू प्राथमिकता को कम करने के लिए कार्यक्रम को फिर से शुरू करने पर विचार कर सकते हैं, जैसे:

renice -n 19 "$duPid"

आप दोनों प्रारंभिक समय में भी कर सकते हैं:

nice -n 19 ionice -c 3 du

5
किसी मौजूदा प्रोग्राम का नाम बदलने के लिए, आपको reniceइसके बजाय कॉल करना होगा niceduआयनिस और अच्छा दोनों के साथ शुरू करने के लिए , आप दोनों कार्यक्रमों को चेन कर सकते हैं nice -n19 ionice -c3 du:।
जोफेल

niceखुद भी I / O शेड्यूलर प्राथमिकता को प्रभावित करता है, न केवल CPU।
जोर्डम

1
@jordanm जहाँ तक मुझे पता है (कम से कम लिनक्स में), niceकेवल सीपीयू निकनेस को प्रभावित करता है (जो अप्रत्यक्ष रूप से I / O को प्रभावित कर सकता है, लेकिन I / O शेड्यूलर प्राथमिकता को प्रभावित नहीं करना चाहिए)। आप इस व्यवहार को कहाँ देखते हैं? क्या यह कहीं दस्तावेज है?
क्रिस डाउन

@ क्रिसडाउन - मुझे याद है कि इसे लिनक्स कर्नेल को समझना
jordanm

@ जोर्डनम एचएम, मुझे वह किताब मिल गई है। मैंने इसके माध्यम से एक त्वरित स्किम किया और केवल 263 पृष्ठ के बारे में स्पष्ट विवरण देते हुए पाया nice, और यह केवल सीपीयू बेस टाइम क्वांटम के बारे में बात करता है। क्या आपके पास कोई विचार है कि यह पुस्तक में कहां था? मैं एक आधिकारिक स्रोत को पढ़ने के लिए है कि राज्यों में यह, उस में उल्लेख नहीं है दिलचस्पी होगी man nice, man 2 nice, man 2 setpriority, info niceया info 'nice invocation'जहाँ तक मैं बता सकता हूँ के रूप में है, जो काफी विस्तार का एक सा में इन जाने के कुछ क्योंकि कैसे के बारे में अजीब बात है niceकॉल काम करता है और यह क्या करता है
क्रिस डाउन

4

यदि आपके पास एक ही डायरेक्टरी में टन फाइलें हैं, तो यह I / O स्पाइक्स के लिए जिम्मेदार हो सकता है, क्योंकि कई फाइल सिस्टम एक ही डायरेक्टरी में बड़े फाइल ट्री को अच्छी तरह से हैंडल नहीं करते हैं। इसे अधिक उपनिर्देशिकाओं में विभाजित करने से वहां मदद मिल सकती है। यदि आपके पास एक एकल dir में 10k से अधिक फाइलें हैं और यह समस्या पैदा कर रहा है, तो आपको संभवतः इसे विभाजित करना चाहिए।

डिस्क उपयोग को ट्रैक करने के लिए, आप पहले देख सकते हैं df, यदि उपयोग मूल्य में तेजी से वृद्धि नहीं हुई है, तो उप-विभाजक या तो नहीं थे और आप duपूरी तरह से छोड़ सकते हैं।

एक अन्य विकल्प एक डिस्क कोटा सिस्टम हो सकता है जो निरंतर उपयोग का ट्रैक रखता है, यदि आपका फाइल सिस्टम इसका समर्थन करता है।


सिस्टम एक बिल्ड फ़ार्म है, इसलिए एक dir में फ़ाइलों की संख्या वास्तव में हमारे द्वारा बनाए गए घटकों के devs के नीचे है। dfकाफी काम नहीं करेगा - समस्या यह है कि हमारे पास लिपियों की सफाई है, इसलिए हम कोई बदलाव नहीं देख सकते हैं, लेकिन स्वचालित रूप से डिस्क स्थान को आक्रामक रूप से हथियाने वाली स्वचालित नौकरी के लिए शुरुआती चेतावनी को याद किया है। हम समग्र डिस्क उपयोग की निगरानी के लिए zabbix का उपयोग करते हैं, लेकिन व्यक्तिगत निर्देशिकाओं को जानना जहां चीजें थोड़ा पागल हो रही हैं, बहुत आवश्यक है।
डैनी स्टेपल

0

इसके अलावा ioniceआप डिस्क एक्सेस को अधिक कुशल बनाने की कोशिश कर सकते हैं। इस पर अमल करके कोशिश की जा सकती है

find /du/root -printf ""
find /du/root -perm 777 -printf ""

पहला (शायद के माध्यम से ioniceभी)। बहुत सारी फाइलें होने पर यह काम नहीं करेगा। फ्री रैम की मात्रा पर निर्भर करता है कि कितने बहुत अधिक है।

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