कैसे अच्छा और नाम का उपयोग कर लिनक्स प्रक्रिया प्राथमिकता सेट करने के लिए


इस लेख में, हम संक्षेप में कर्नेल शेड्यूलर (जिसे प्रक्रिया शेड्यूलर भी कहा जाता है), और प्रक्रिया प्राथमिकता समझाएंगे, जो विषय से परे हैं इस गाइड का दायरा। फिर हम थोड़ा लिनक्स प्रोसेस प्रबंधन में गोता लगाएँगे: संशोधित प्राथमिकता के साथ प्रोग्राम या कमांड चलाने का तरीका देखें और लिनक्स प्रक्रियाओं को चलाने की प्राथमिकता को भी बदलें।

यह भी पढ़ें: लिनक्स प्रक्रियाओं की निगरानी कैसे करें और प्रति उपयोगकर्ता आधार पर प्रक्रिया की सीमाएं निर्धारित करें

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

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

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

लिनक्स में कुल 140 प्राथमिकताएं और दो अलग-अलग प्राथमिकताएं लागू होती हैं। पहला अच्छा मूल्य है ( अच्छाई ) जो <कोड> -20 (उच्चतम प्राथमिकता मूल्य) से <कोड> 19 (सबसे कम प्राथमिकता मूल्य) और डिफ़ॉल्ट तक होता है है 0 , यह वही है जिसे हम इस गाइड में उजागर करेंगे। दूसरा वास्तविक समय की प्राथमिकता है, जो डिफ़ॉल्ट रूप से 1 से 99 तक होता है, फिर 100 से 139 होता है। उपयोगकर्ता-स्थान के लिए हैं।

लिनक्स की एक महत्वपूर्ण विशेषता गतिशील प्राथमिकता-आधारित समय-निर्धारण है, जो आपकी आवश्यकताओं के आधार पर प्रक्रियाओं के अच्छे मूल्य को परिवर्तित (बढ़ा या घटा) करने की अनुमति देता है, जैसा कि हम बाद में देखेंगे।

लिनक्स प्रक्रियाओं का अच्छा मूल्य कैसे जांचें

प्रक्रियाओं के अच्छे मूल्यों को देखने के लिए, हम उपयोगिताओं का उपयोग कर सकते हैं जैसे कि ps, top या htop।

उपयोगकर्ता-निर्धारित प्रारूप में पीएस कमांड के साथ प्रक्रियाओं को अच्छा मूल्य देखने के लिए (यहां NI कॉलम प्रक्रियाओं की स्पष्टता दिखाता है)।

$ ps -eo pid,ppid,ni,comm

वैकल्पिक रूप से, आप लिनक्स प्रक्रियाओं का उपयोग शीर्ष या htop उपयोगिताओं को देखने के लिए कर सकते हैं जैसा कि दिखाया गया है।

$ top
$ htop

ऊपर शीर्ष और htop आउटपुट से, आप देखेंगे कि एक कॉलम है जिसे PR और PRI receptively कहा जाता है जो एक प्रक्रिया की प्राथमिकता को दर्शाता है।

इसलिए इसका मतलब है कि:

  • NI – is the nice value, which is a user-space concept, while
  • PR or PRI – is the process’s actual priority, as seen by the Linux kernel.
Total number of priorities = 140
Real time priority range(PR or PRI):  0 to 99 
User space priority range: 100 to 139

अच्छा मूल्य सीमा (NI): -20 से 19

PR = 20 + NI
PR = 20 + (-20 to + 19)
PR = 20 + -20  to 20 + 19
PR = 0 to 39 which is same as 100 to 139.

लेकिन अगर आपको नीचे दिखाए गए स्क्रीन शॉट में दिखाए गए नंबर के बजाय एक rt दिखाई देता है, तो इसका मूल रूप से यह मतलब है कि प्रक्रिया वास्तविक समय निर्धारण प्राथमिकता के तहत चल रही है।

लिनक्स में दिए गए अच्छे मूल्य के साथ एक कमांड कैसे चलाएं

यहां, हम यह देखेंगे कि किसी प्रोग्राम या कमांड के CPU उपयोग को कैसे प्राथमिकता दी जाए। यदि आपके पास बहुत सीपीयू-गहन कार्यक्रम या कार्य है, लेकिन आप यह भी समझते हैं कि पूरा होने में लंबा समय लग सकता है, तो आप इसे अच्छा आदेश का उपयोग करके उच्च या अनुकूल प्राथमिकता निर्धारित कर सकते हैं।

सिंटैक्स निम्नानुसार है:

$ nice -n niceness-value [command args] 
OR
$ nice -niceness-value [command args] 	#it’s confusing for negative values
OR
$ nice --adjustment=niceness-value [command args]

जरूरी:

  • If no value is provided, nice sets a priority of 10 by default.
  • A command or program run without nice defaults to a priority of zero.
  • Only root can run a command or program with increased or high priority.
  • Normal users can only run a command or program with low priority.

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

$ sudo nice -n 5 tar -czf backup.tar.gz ./Documents/*
OR
$ sudo nice --adjustment=5 tar -czf backup.tar.gz ./Documents/*

आप तीसरी विधि का भी उपयोग कर सकते हैं जो विशेष रूप से नकारात्मक सुंदरता मूल्यों के लिए थोड़ा भ्रमित है।

$ sudo nice -5 tar -czf backup.tar.gz  ./Documents/*

लिनक्स में एक प्रक्रिया की निर्धारण प्राथमिकता को बदलें

जैसा कि हमने पहले बताया, लिनक्स गतिशील प्राथमिकता-आधारित समय-निर्धारण की अनुमति देता है। इसलिए, यदि कोई प्रोग्राम पहले से चल रहा है, तो आप इस रूप में रेनॉइस कमांड के साथ अपनी प्राथमिकता बदल सकते हैं:

$ renice -n  -12  -p 1055
$ renice -n -2  -u apache

नमूने से शीर्ष आउटपुट नीचे, टीमपे + की पीआईडी 1055 के साथ अब -12 और सभी के लिए अच्छा है उपयोगकर्ता अपाचे के स्वामित्व वाली प्रक्रिया <कोड> -2 है।

इस आउटपुट का उपयोग करते हुए, आप सूत्र PR = 20 + NI स्टैंड देख सकते हैं,

PR for ts3server = 20 + -12 = 8
PR for apache processes = 20 + -2 = 18

किसी उपयोगकर्ता की प्रक्रियाओं के लिए आपके द्वारा त्यागें आदेश के साथ कोई भी परिवर्तन अच्छे मान केवल अगले रिबूट तक लागू होते हैं। स्थायी डिफ़ॉल्ट मान सेट करने के लिए, अगला भाग पढ़ें।

किसी विशिष्ट उपयोगकर्ता की प्रक्रियाओं का डिफ़ॉल्ट अच्छा मूल्य कैसे सेट करें

आप किसी विशेष उपयोगकर्ता या समूह के डिफ़ॉल्ट अच्छे मूल्य को /etc/security/limits.conf फ़ाइल में सेट कर सकते हैं। PAM के माध्यम से लॉग इन किए गए उपयोगकर्ताओं के लिए संसाधन सीमा को परिभाषित करना प्राथमिक कार्य है।

एक उपयोगकर्ता के लिए एक सीमा को परिभाषित करने के लिए सिंटैक्स निम्नानुसार है (और फ़ाइल में विभिन्न स्तंभों के संभावित मूल्यों को समझाया गया है):

#<domain>   <type>  <item>  <value>

अब नीचे दिए गए सिंटैक्स का उपयोग करें जहां हार्ड - का मतलब है हार्ड लिंक और सॉफ्ट का मतलब लागू करना - सॉफ्ट लिमिट को लागू करना।

<username>  <hard|soft>  priority  <nice value>

वैकल्पिक रूप से, /etc/security/limits.d/ के तहत एक फ़ाइल बनाएं, जो ऊपर मुख्य फ़ाइल में सेटिंग्स को ओवरराइड करता है, और ये फाइलें वर्णानुक्रम में पढ़ी जाती हैं।

उपयोगकर्ता के लिए फ़ाइल /etc/security/limits.d/tecmint-priority.conf बनाकर प्रारंभ करें tecmint :

# vi /etc/security/limits.d/tecmint-priority.conf

फिर इस कॉन्फ़िगरेशन को इसमें जोड़ें:

tecmint  hard  priority  10

फ़ाइल को सहेजें और बंद करें। अब से, tecmint के स्वामित्व वाली किसी भी प्रक्रिया का 10 और 30 का पीआर का अच्छा मूल्य होगा।

अधिक जानकारी के लिए, अच्छा और त्याग के पृष्ठों को पढ़ें:

$ man nice
$ man renice 

आप लिनक्स प्रक्रिया प्रबंधन के बारे में इन निम्नलिखित लेखों को पढ़ना पसंद कर सकते हैं।

  1. How to Find and Kill Running Processes in Linux
  2. A Guide to Kill, Pkill and Killall Commands to Terminate a Process in Linux
  3. How to Monitor System Usage, Outages and Troubleshoot Linux Servers
  4. CPUTool – Limit and Control CPU Utilization of Any Process in Linux

इस लेख में, हमने कर्नेल शेड्यूलर, प्रक्रिया प्राथमिकता के बारे में संक्षेप में बताया, एक कार्यक्रम या कमांड को संशोधित प्राथमिकता के साथ चलाने के लिए देखा और सक्रिय लिनक्स प्रक्रियाओं की प्राथमिकता को भी बदल दिया। आप नीचे दिए गए फीडबैक फॉर्म के माध्यम से इस विषय से संबंधित कोई भी विचार साझा कर सकते हैं।