जो कोई भी विंडोज़ टास्क शेड्यूलर में कार्य चलाता है, उसे देर-सबेर रनटाइम में अस्पष्ट अंतर का सामना करना पड़ेगा। एक PHP स्क्रिप्ट जो कमांड लाइन पर 5 मिनट में चलती है, विंडोज टास्क शेड्यूलर के माध्यम से चलने पर अचानक 20 मिनट लग जाती है। समान उपयोगकर्ता, समान अधिकार, समान कोड - निष्पादन समय का चार गुना। वहां क्या चल रहा था?
घंटे के बाद डिबगिंग, प्रक्रिया मॉनिटर सत्र और अनगिनत कॉन्फ़िगरेशन तुलनाओं के बावजूद, समाधान आश्चर्यजनक रूप से सरल था: विंडोज़ कार्य शेड्यूलिंग डिफ़ॉल्ट रूप से कम प्रक्रिया प्राथमिकता निर्धारित करती है। टास्क शेड्यूलर में कार्यों के लिए डिफ़ॉल्ट मान है 7 (सामान्य से नीचे), नहीं 4-6 (सामान्य), जैसा कि आप उम्मीद करेंगे। यह प्रतीत होता है कि छोटा अंतर I/O-सघन संचालन में बड़े पैमाने पर प्रदर्शन हानि का कारण बन सकता है।
विंडोज़ प्राथमिकता स्तर विस्तार से इस प्रकार हैं:
| कीमत | प्राथमिकता | विवरण |
|---|---|---|
| 0 | रियल टाइम | सर्वोच्च प्राथमिकता (सावधानी!) |
| 1 | उच्च | उच्च प्राथमिकता |
| 2-3 | सामान्य से उपर | नॉर्मल के बारे में |
| 4-6 | सामान्य | इंटरैक्टिव प्रक्रियाओं के लिए मानक |
| 7 | सामान्य से नीचे | कार्य शेड्यूलर में डिफ़ॉल्ट |
| 8-9 | सामान्य से नीचे | और भी कम |
| 10 | निठल्ला | सबसे कम प्राथमिकता |
कार्य निर्धारण में प्राथमिकता से जुड़ी समस्या बहुआयामी है: जब आप किसी कार्य को निर्यात करते हैं और XML फ़ाइल को देखते हैं, तो आपको अक्सर यह समस्या देखने को मिलेगी। नहीं प्राथमिकता सेटिंग। इसके बाद विंडोज़ चुपचाप डिफ़ॉल्ट मान का उपयोग करेगा 7. GUI निर्यात के दौरान यह मान प्रदर्शित करता है, लेकिन यह कार्य में स्पष्ट रूप से संग्रहीत नहीं होता है। कम प्राथमिकता से न केवल CPU समय कम होता है, बल्कि:
- थ्रॉटल्ड डिस्क I/O संचालन
- निम्न नेटवर्क प्राथमिकता
- खराब फ़ाइल सिस्टम कैशिंग
- डेटाबेस तक पहुँच में देरी
भले ही आप एक ही उपयोगकर्ता का उपयोग करें और "उच्चतम विशेषाधिकारों के साथ चलाएँ" सक्षम करें, कार्य भिन्न प्राथमिकताओं के साथ एक भिन्न Windows स्टेशन/डेस्कटॉप परिवेश में चलता है। समस्या की पहचान करने के लिए, आप PowerShell का उपयोग करके सभी कार्यों को उनकी वास्तविक प्राथमिकताओं के साथ सूचीबद्ध कर सकते हैं।:
38b7fa6c77dc344401485cd338ea4128
मेरे लगभग सभी कार्य प्राथमिकता के साथ चले 7. अब हम एक साथ कई कार्यों की प्राथमिकता को विशेष रूप से ठीक करते हैं:
38b7fa6c77dc344401485cd338ea4128
प्राथमिकता निर्धारित करने के बाद 4 मेरी PHP स्क्रिप्ट अपेक्षित 300 सेकंड में (सामान्य रूप से) फिर से चली। यदि आपने किसी विशिष्ट उपयोगकर्ता खाते के साथ कार्यों को कॉन्फ़िगर किया है, तो आप इसे निम्नानुसार पंक्ति 10 में दर्ज कर सकते हैं:
38b7fa6c77dc344401485cd338ea4128