क्या सिस्टम लोड / CPU समय पर इसके प्रभाव को कम करने के लिए एक प्रक्रिया के लिए एक उच्च अच्छा स्तर सेट करना एक प्रभावी तरीका है?


10

मेरे पास rsync cron जॉब है जो सर्वर लोड को बढ़ा रहा है और मॉनिटर अलर्ट ट्रिगर कर रहा है। अगर मैं नौकरी को उच्च स्तर के साथ चलाने के लिए सेट करता हूं, तो क्या यह सिस्टम लोड मानों पर प्रभावी रूप से प्रभाव को कम करेगा?


Rsync के लिए, अपने स्विचेस का उपयोग कम्प्रेशन को कम करने, या बैंडविड्थ उपयोग को सीमित करने के लिए अधिक प्रभावी होगा।
निमो

जवाबों:


9

यह आपके लोड को कम नहीं करेगा।

यह केवल अन्य प्रक्रियाओं को सीपीयू समय का अधिक उपयोग करने देगा यदि संभव संसाधन विवाद (पर्याप्त उपलब्ध सीपीयू के लिए "प्रतिस्पर्धा" कई प्रक्रियाएं हैं)।


9

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

से http://linux.101hacks.com/monitoring-performance/hack-100-nice-command-examples/

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

तो हाँ, आप क्रोन जॉब को अन्य प्रक्रियाओं की तुलना में उच्च स्तर पर चलाना चाहते हैं यदि आप यह सुनिश्चित करना चाहते हैं कि अन्य प्रक्रियाओं को प्राथमिकता मिले।

ऐसा करने के लिए आप चाहते हैं कि आपकी क्रोन स्क्रिप्ट को इस तरह निष्पादित किया जाए:

/bin/nice -n 10 /path/to/cron-script

यह 10 से बढ़ी हुई शुद्धता पर क्रोन स्क्रिप्ट को चलाएगा। आप संभवतः शेष प्रक्रियाओं और स्क्रिप्ट के निष्पादन समय के बीच एक अच्छा (दंडित इरादा नहीं) संतुलन खोजने के लिए थोड़ा परीक्षण करना चाहते हैं।

यह भी देखें कि अच्छा काम कैसे होता है? और http://www.cyberciti.biz/faq/change-the-nice-value-of-a-process/ अधिक जानकारी के लिए।


5

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

यदि आप CPU-बाध्य प्रक्रिया चला रहे हैं (rsync नहीं है, लेकिन उदाहरण के लिए), तो यह हमेशा CPU समय का उपयोग करना चाहेगा जब भी कुछ उपलब्ध हो। चूंकि यह हमेशा चलना चाहता है, यह सिस्टम लोड मान में 1.0 के लोड मान का योगदान देगा। इससे कोई फर्क नहीं पड़ता कि प्रक्रिया अच्छा स्तर क्या है, क्योंकि रन कतार में प्रक्रियाओं की क्रम से रन कतार की औसत लंबाई अप्रभावित है ।


यह याद रखना महत्वपूर्ण है। यदि आप बहुत सी नेक्ड प्रक्रियाएँ चलाते हैं, तो सिस्टम लोड बहुत अधिक लगेगा, भले ही वास्तव में कोई वास्तविक कार्य धीमा हो रहा हो। कुछ मामलों में लोड एक वास्तविक समस्या को प्रकट करता है यानी कि लिनक्स उन सभी संसाधनों का उपयोग करने में सक्षम नहीं है जिन्हें वे वास्तव में समस्या के बिना उपयोग कर सकते हैं (उन सभी को बिना किसी लाभ के अधिकांश समय इंतजार करना छोड़ दिया जाता है)।
नेमो

3

आप सिस्टम लोड / CPU समय पर अपने प्रभाव के प्रभाव को कम करने के 3 तरीकों पर विचार कर सकते हैं:

  • niceकार्य की प्राथमिकता को मैन्युअल रूप से कम करने के लिए कमांड का उपयोग करें ।
  • cpulimitबार-बार प्रक्रिया को रोकने के लिए कमांड का उपयोग करें ताकि यह एक निश्चित सीमा से अधिक न हो।
  • लिनक्स का उपयोग करें built-in control groups, एक तंत्र जो अनुसूचक को प्रक्रिया के लिए उपलब्ध संसाधनों की मात्रा को सीमित करने के लिए कहता है।

साधन

http://blog.scoutapp.com/articles/2014/11/04/restricting-process-cpu-usage-using-nice-cpulimit-and-cgroups


आप निश्चित रूप से सिस्टम संसाधनों को संतुलित करने के लिए cgroups का उपयोग करना चाहते हैं। आप अपनी इच्छानुसार संसाधनों का विभाजन कर सकते हैं (CPU, मेमोरी, डिस्क IO, डिस्क बैंडविड्थ) और कम लोड की स्थिति में भी "कम प्राथमिकता" प्रक्रियाओं को उपयोगकर्ता मोड ट्रिक के विपरीत अधिकतम प्रदर्शन मिलता है जो प्रायः हर समय कम प्राथमिकता प्रक्रिया को धीमा करता है।
मिक्को रेंटालीनें
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.