आइए Windows प्रोसेस की प्राथमिकता के बारे में बात करें। ज्यादातर मामलों में, कस्टम प्रोसेस प्राथमिकता सेटिंग्स के बारे में सोचने की आवश्यकता नहीं होती, लेकिन कभी-कभी एक योग्य सिस्टम एडमिनिस्ट्रेटर चल रहे कार्यों के बीच प्रोसेसर समय को बेहतर ढंग से आवंटित करने में सिस्टम की मदद कर सकता है। इसकी आवश्यकता कब होती है? उदाहरण के लिए, एप्लिकेशन सर्वर पर, आप एप्लिकेशन और SQL सर्वर को अधिक CPU समय दे सकते हैं, क्योंकि वे सबसे अधिक रिसोर्स-महत्वपूर्ण प्रोसेस हैं।
आम तौर पर, आप Task Manager का उपयोग करके प्रोसेस की प्राथमिकता देख और बदल सकते हैं (someprocess.exe → Set Priority)
Windows NT/2000/7/2008
Windows Server 2012 में, ये सेटिंग्स Details टैब पर स्थित हैं।
जैसा कि आप इन स्नैपशॉट से देख सकते हैं, केवल 6 प्राथमिकता प्रकार उपलब्ध हैं (जैसा कि बाद में समझाया जाएगा, ये प्राथमिकता वर्ग हैं)। क्या यह पर्याप्त है? Microsoft को लगता है कि यह है। लेकिन आइए Bill Gates की प्रसिद्ध कहावत याद करें, जिन्होंने कहा था कि "640 KB RAM हर किसी के लिए पर्याप्त होगा"। लेकिन समय ने दिखाया कि यह मामले से बहुत दूर है। : )
अब देखते हैं, यह वास्तव में कैसा दिखता है।
वास्तव में, Windows में 32 प्राथमिकता स्तर हैं, 0 से 31 तक।
वे निम्नानुसार समूहित हैं:
- 31 — 16 रियल-टाइम स्तर हैं
- 15 — 1 डायनामिक स्तर हैं
- 0 जीरो-पेज थ्रेड के लिए आरक्षित एक सिस्टम स्तर है
जब एक प्रोसेस बनाया जाता है, तो इसे छह प्राथमिकता वर्ग में से एक असाइन किया जाता है:
- रियल-टाइम क्लास (मान 24),
- हाई क्लास (मान 13),
- अबव नॉर्मल क्लास (मान 10),
- नॉर्मल क्लास (मान 8),
- बिलो नॉर्मल क्लास (मान 6),
- या आइडल क्लास (मान 4)।
जैसा कि ऊपर उल्लेख किया गया है, आप Task Manager का उपयोग करके प्रोसेस प्राथमिकता देख सकते हैं।
नोट: अबव नॉर्मल और बिलो नॉर्मल प्राथमिकताएं पहली बार Windows 2000 में दिखाई दीं।
प्रत्येक थ्रेड की प्राथमिकता (बेसिक थ्रेड प्राथमिकता) इसके प्रोसेस की प्राथमिकता और थ्रेड की स्वयं की सापेक्ष प्राथमिकता से बनी होती है। थ्रेड की सापेक्ष प्राथमिकताओं के सात प्रकार हैं:
- नॉर्मल: प्रोसेस के समान
- अबव नॉर्मल: प्रोसेस की प्राथमिकता +1
- बिलो नॉर्मल: प्रोसेस की प्राथमिकता -1
- हाईएस्ट: +2;
- लोएस्ट: -2;
- टाइम क्रिटिकल: रियल-टाइम क्लास के लिए थ्रेड की वर्तमान प्राथमिकता 31 सेट करता है, और बाकी क्लास के लिए 15
- आइडल: रियल-टाइम क्लास के लिए थ्रेड की वर्तमान प्राथमिकता 16 सेट करता है, और बाकी क्लास के लिए 1
निम्न तालिका प्रोसेस प्राथमिकताओं, सापेक्ष और वर्तमान थ्रेड प्राथमिकताओं को दिखाती है।
| Thread Priority | Process Class | Idle class | Below normal class | Normal class | Above normal class | High class | Real time class |
| 1 | Idle | Idle | Idle | Idle | Idle | ||
| 2 | Lowest | ||||||
| 3 | Below … | ||||||
| 4 | Idle class | Normal | Lowest | ||||
| 5 | Above … | Below … | |||||
| 6 | Below normal class | Highest | Normal | Lowest | |||
| 7 | Above … | Below … | |||||
| 8 | Normal class | Highest | Normal | Lowest | |||
| 9 | Above … | Below … | |||||
| 10 | Above normal class | Highest | Normal | ||||
| 11 | Above … | Lowest | |||||
| 12 | Highest | Below … | |||||
| 13 | High class | Normal | |||||
| 14 | Above … | ||||||
| 15 | Highest | ||||||
| 15 | Time critical | Time critical | Time critical | Time critical | Time critical | ||
| 16 | Idle | ||||||
| 17 | |||||||
| 18 | |||||||
| 19 | |||||||
| 20 | |||||||
| 21 | |||||||
| 22 | Lowest | ||||||
| 23 | Below … | ||||||
| 24 | Real time class | Normal | |||||
| 25 | Above … | ||||||
| 26 | Highest | ||||||
| 27 | |||||||
| 28 | |||||||
| 29 | |||||||
| 30 | |||||||
| 31 | Time critical |
गैर-मानक प्राथमिकता के साथ प्रोसेस कैसे शुरू करें या इसे बदलें?
विधि 1. Task Manager का उपयोग करके टास्क/प्रोसेस शुरू करें और इसकी प्राथमिकता बदलें
विधि नुकसान:
- केवल 6 प्रकार की प्राथमिकताएं उपलब्ध हैं
- प्राथमिकताएं माउस से बदलती हैं और आप इसे ऑटोमैटिक नहीं बना सकते।
विधि 2. संबंधित कुंजियों के साथ START कमांड उपयोग करें
प्राथमिकताओं के लिए जिम्मेदार उपलब्ध कुंजियां निम्न हैं (मैं जानबूझकर START कमांड की उन कुंजियों को छोड़ देता हूं जो वर्णित प्राथमिकता सेटिंग प्रक्रिया से संबंधित नहीं हैं):
C:\>start /?
Starts a separate window to run a specified program or command.
START ["title"] [/D path] [/I] [/MIN] [/MAX] [/SEPARATE | /SHARED]
[/LOW | /NORMAL | /HIGH | /REALTIME | /ABOVENORMAL | /BELOWNORMAL]
[/NODE ] [/AFFINITY ] [/WAIT] [/B]
[command/program] [parameters]
LOW Start application in the IDLE priority class.
NORMAL Start application in the NORMAL priority class.
HIGH Start application in the HIGH priority class.
REALTIME Start application in the REALTIME priority class.
ABOVENORMAL Start application in the ABOVENORMAL priority class.
BELOWNORMAL Start application in the BELOWNORMAL priority class.
जैसा कि हम देख सकते हैं, START कमांड उसी 6 प्राथमिकताओं के साथ प्रोसेस चलाने की अनुमति देती है जो Task Manager में उपलब्ध हैं।
विधि नुकसान:
- केवल 6 प्रकार की प्राथमिकताएं उपलब्ध हैं
विधि 3. wmic.exe यूटिलिटी का उपयोग करना
जैसा कि ऊपर दिखाया गया है, Task Manager और START कमांड प्राथमिकताएं असाइन करने में काफी अजीब हैं। आइए देखें कि इसे अधिक लचीले ढंग से कैसे करें। हम wmic.exe का उपयोग करेंगे।
कमांड प्रॉम्प्ट:
wmic process where name="AppName" CALL setpriority ProcessIDLevel
उदाहरण:
wmic process where name="calc.exe" CALL setpriority 32768
या
wmic process where name="calc.exe" CALL setpriority "above normal"
प्राथमिकताएं (प्रीसेट):
- आइडल: 64
- बिलो नॉर्मल: 16384
- नॉर्मल: 32
- अबव नॉर्मल: 32768
- हाई प्राथमिकता: 128
- रियल टाइम: 256
नोट: यदि एक ही नाम के कई प्रोसेस हैं तो क्या करें? प्रोसेस की प्राथमिकता को उसके नाम और PID (Process ID) दोनों का उपयोग करके बदला जा सकता है।
आवश्यक जानकारी प्राप्त करने के लिए wmic.exe चलाने का एक छोटा उदाहरण यहां दिया गया है।
इस कमांड का उपयोग करें:
wmic process list brief
नोट: मैं इस कमांड को चलाने का उदाहरण नहीं दूंगा क्योंकि प्रोसेस की सूची बहुत लंबी है। यदि आप चाहें तो स्वयं करें।
आपको अपने लोकल कंप्यूटर पर चल रहे प्रोसेस की सूची मिलेगी। अब यह कमांड चलाएं:
wmic process list brief | find "cmd.exe"
यहां परिणाम है:
मैंने जानबूझकर cmd.exe की कई कॉपी शुरू कीं, ताकि यह अधिक प्रदर्शनकारी हो।
अब प्रोसेस की सूची उन तक सीमित है जिनके नाम में "cmd.exe" है। प्रोसेस के PID पर ध्यान दें।
अब WMI का उपयोग करके आवश्यक प्रोसेस चुनने का प्रयास करें। ऐसा करने के लिए, बस दर्ज करें:
wmic process where description='cmd.exe' list brief
यहां परिणाम है:
परिणामों की तुलना करें। CMD.EXE का PID याद रखें।
wmic.exe चलाने के लिए कमांड स्ट्रिंग:
wmic process where processid='XXXX' CALL setpriority ProcessIDLevel
अब हम एक विशिष्ट प्रोसेस की प्राथमिकता बदल सकते हैं (उदाहरण के लिए, PID=8476):
wmic process where processid='8476' CALL setpriority 32768
या
wmic process where processid='8476' CALL setpriority "above normal"
आगे क्या? सोचें, प्रयास करें, चुनें और अपनी प्राथमिकताओं को प्रबंधित करें ताकि सेवाओं और प्रोसेस के प्रदर्शन के साथ-साथ एंड यूजर अनुभव में सुधार हो।