जब लिनक्स सर्वर धीमा हो जाए तो आवश्यक! nice कमांड से प्रोसेस प्राथमिकता को पूरी तरह नियंत्रित करें

अवलोकन

कम सर्वर संसाधनों वाले वातावरण में, बैकग्राउंड कार्य या भारी बैच स्क्रिप्ट चलने पर मुख्य सेवाओं की प्रतिक्रिया गति धीमी हो सकती है। इस लेख में, हम nice और renice कमांड का उपयोग करके CPU शेड्यूलिंग प्राथमिकता सेट करने और सिस्टम स्थिरता बनाए रखने के व्यावहारिक सुझावों के बारे में जानेंगे।

1. प्रोसेस प्राथमिकता (NI/PR) की जांच और htop मॉनिटरिंग वातावरण तैयार करना

प्रोसेस प्राथमिकता मॉनिटरिंग अभ्यास के लिए आवश्यक उपकरण htop और procps पैकेज इंस्टॉल करें।

apt-get update -qq && apt-get install -y htop procps

ps कमांड वर्तमान में सिस्टम में चल रही प्रोसेस की विस्तृत जानकारी और प्राथमिकता मान की जांच करती है।
आउटपुट परिणामों में, NI उपयोगकर्ता द्वारा समायोजित करने योग्य nice मान है, और PRI कर्नेल शेड्यूलर द्वारा वास्तव में सौंपी गई प्राथमिकता को दर्शाता है।
⚙️ [मुख्य विकल्प]

-e : सिस्टम में चल रही सभी प्रोसेस का चयन करके प्रदर्शित करता है।
-o : आउटपुट कॉलम आइटम (pid, ni, pri, comm आदि) को कस्टम प्रारूप में सेट करता है।
-u : केवल विशिष्ट उपयोगकर्ता के स्वामित्व वाली प्रोसेस को फ़िल्टर करके प्रदर्शित करता है।
-p : केवल निर्दिष्ट PID (प्रोसेस ID) के अनुरूप प्रोसेस की जांच करता है।
-f : प्रोसेस के पूर्ण विवरण वाली पूरी प्रारूप सूची प्रदर्शित करता है।

ps -eo pid,ni,pri,comm | head -n 15

2. nice कमांड से कम प्राथमिकता वाले बैकग्राउंड कार्य चलाना

अभ्यास के लिए आवश्यक टेस्ट फ़ाइलों को सुरक्षित रूप से बनाने और प्रबंधित करने के लिए एक अस्थायी कार्यशील डायरेक्टरी बनाएं और उस स्थान पर जाएं।

mkdir -p /tmp/nice_demo && cd /tmp/nice_demo

nice कमांड के साथ nice मान को 10 निर्दिष्ट करके CPU संसाधन हिस्सेदारी में रियायत देने हेतु प्राथमिकता कम करते हुए बैकग्राउंड (&) में एक बड़ी फ़ाइल निर्माण कार्य चलाएं।

nice -n 10 dd if=/dev/urandom of=/tmp/nice_demo/sample.dat bs=1M count=100 &

ps कमांड और grep को मिलाकर चल रही dd प्रोसेस के PID के साथ-साथ यह जांचें कि वास्तव में लागू nice मान (NI) इच्छानुसार सेट हुआ है या नहीं।

ps -eo pid,ni,comm | grep dd

3. renice कमांड से पहले से चल रही प्रोसेस की प्राथमिकता वास्तविक समय में बदलना

वास्तविक समय में प्राथमिकता बदलने के अभ्यास के लिए, 300 सेकंड तक प्रतीक्षा करने वाली sleep प्रोसेस को बैकग्राउंड (&) में चलाएं।

sleep 300 &

हाल ही में बैकग्राउंड में चलाई गई प्रोसेस की ID (PID) दर्शाने वाले विशेष चर $! का उपयोग करके इसे पर्यावरण चर TARGET_PID में सहेजें।

TARGET_PID=$!

ps कमांड से लक्षित प्रोसेस के वर्तमान nice मान (NI) की जांच करें, जिससे पता चलता है कि यह डिफ़ॉल्ट मान 0 पर काम कर रहा है।

ps -p $TARGET_PID -o pid,ni,comm

renice कमांड का उपयोग करके पहले से चल रही लक्षित प्रोसेस के nice मान को 15 में बदलकर प्राथमिकता को कम करें।
आउटपुट परिणामों के माध्यम से, आप पुष्टि कर सकते हैं कि पुरानी प्राथमिकता (old priority 0) सफलतापूर्वक नई प्राथमिकता (new priority 15) में बदल गई है।

renice 15 -p $TARGET_PID

ps कमांड से लक्षित प्रोसेस को फिर से देखकर पुष्टि करें कि nice मान (NI) तुरंत 15 के रूप में लागू हुआ है या नहीं।

ps -p $TARGET_PID -o pid,ni,comm

अभ्यास पूरा होने के बाद, सिस्टम संसाधनों को साफ़ करने के लिए टेस्ट प्रोसेस को जबरन समाप्त (kill -9) करें।

kill -9 $TARGET_PID

4. root अनुमतियों का उपयोग करके उच्च प्राथमिकता (ऋणात्मक nice) देना और सावधानियां

सामान्य उपयोगकर्ता द्वारा सेट नहीं किए जा सकने वाले ऋणात्मक nice मान (-5) को लागू करने के लिए, sudo व्यवस्थापक अनुमतियों का उपयोग करके उच्च प्राथमिकता वाली प्रोसेस को बैकग्राउंड (&) में चलाएं।
ऋणात्मक nice मान प्राप्त करने वाली प्रोसेस को CPU शेड्यूलिंग के दौरान उच्च निष्पादन प्राथमिकता मिलती है, इसलिए इसे सिस्टम संसाधन केंद्रित रूप से आवंटित किए जा सकते हैं।

sudo nice -n -5 bash -c ’echo “High priority process running” && sleep 5’ &

ps कमांड से चल रही प्रोसेस की जांच करें ताकि यह पुष्टि हो सके कि लक्षित प्रोसेस (sleep) का nice मान (NI) सफलतापूर्वक -5 के रूप में लागू हुआ है।
आउटपुट परिणामों में, आप देख सकते हैं कि सामान्य डिफ़ॉल्ट प्रोसेस (0) के विपरीत, एक ऋणात्मक nice मान (-5) सेट किया गया है और यह उच्च प्राथमिकता के साथ काम कर रहा है।

ps -eo pid,ni,comm | grep -E ‘sleep|bash’ | tail -n 5

अब तक, हमने nice कमांड से प्रोसेस प्राथमिकता को समायोजित करने के तरीके पर संक्षेप में चर्चा की है, जो तब उपयोगी होता है जब लिनक्स सर्वर धीमा हो जाता है।
जब सर्वर संसाधनों की कमी हो, तो स्थिति के अनुसार उचित प्राथमिकता निर्दिष्ट करके अपने सिस्टम को अधिक स्थिर और सुचारू रूप से संचालित करें।