क्या प्रक्रिया प्राथमिकता समय-समय पर ओएस द्वारा पुनर्गणना की जाती है?


3

मेरे पास जीत -7 अनुसूची और प्रक्रिया प्राथमिकता के बारे में एक सवाल है।

परिदृश्य यह है: मेरे पास एक प्रक्रिया चल रही है, शुरू में प्राथमिकता "सामान्य"

मुझे यह प्रक्रिया अक्सर पृष्ठभूमि (कम I / O) के लिए कम लगती है। मैं प्राथमिकता को "सामान्य" या "सामान्य से ऊपर" की स्थापना के साथ समाप्त करता हूं, हालांकि कुछ ही मिनटों में यह फिर से कम हो जाएगा।

मैंने मानक विंडोज़ टास्क मैनेजर या प्रॉक्सएक्सपी का उपयोग करके प्राथमिकता निर्धारित करने की कोशिश की है (मुझे लगता है कि कोई अंतर नहीं होना चाहिए)।

तो, सवाल यह है कि क्या प्रक्रिया प्राथमिकता अपने I / O उपयोग को कवर करने के लिए पुनर्गणना है? इस स्थिति में प्रक्रिया विजुअल स्टूडियो 2015 है, जो काफी एचडीडी का उपयोग करता है, जो यहां एक अड़चन हो सकती है।

जवाबों:


0

जहां तक ​​मुझे पता है, विंडोज ऑपरेटिंग सिस्टम एक प्रक्रिया की प्राथमिकता को नहीं बदलेगा जब तक कि ऐसा करने के लिए नहीं कहा जाता है। हालांकि, इसका मतलब यह नहीं है कि एक प्राथमिकता को चल रहे कार्यक्रम द्वारा नहीं बदला जा सकता है। एक .NET संपत्ति है, जिसे Process.PyerityClass कहा जाता है जो प्राथमिकता को बदल सकता है। शायद, वीएस यह निर्धारित कर रहा है कि अन्य थ्रेड को अधिक सीपीयू समय की अनुमति देने के लिए इसका सीपीयू उपयोग कम किया जा सकता है?


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

0

विंडोज़ का शेड्यूलर अप्रत्यक्ष रूप से I / O उपयोग पर विचार करेगा (क्योंकि यह प्रक्रियाओं को कम बार शेड्यूल करेगा जो I / O की प्रतीक्षा करने वाली प्रक्रियाओं की तरह जल्दी वापस लौटता है)। हालांकि, प्रक्रिया प्राथमिकता उपयोगकर्ता [या अन्य कार्यक्रमों (प्रक्रिया स्वयं सहित)] द्वारा निर्धारित एक संख्या होनी चाहिए और अनुसूचक को और प्रभावित करती है। ... जंगली मेरा अनुमान लगाने के लिए पर्याप्त है।

इन सवालों के जवाब का उपयोग कर sugegst Prio एक प्रक्रिया की प्राथमिकता (एक पृष्ठभूमि सेवा द्वारा लागू) यह भी अपने मामले में मदद कर सकता है को बचाने के लिए।


0

मेरी जानकारी के लिए, Windows स्वचालित रूप से प्रक्रिया प्राथमिकता को समायोजित नहीं करता है।

किसी प्रक्रिया की प्राथमिकता को बदलना प्रक्रिया में सभी थ्रेड्स की "आधार प्राथमिकता" और बाद में प्रक्रिया के भीतर बनाए गए सभी थ्रेड्स को सेट करता है। ( इस संबंध के विवरण के लिए मेरा उत्तर यहां देखें ।)

विंडोज उनकी हाल की गतिविधि के आधार पर थ्रेड्स की प्राथमिकताओं को समायोजित करता है । उदाहरण के लिए, I / O के पूरा होने के बाद, डिवाइस के लिए फ़ंक्शन डिवाइस ड्राइवर द्वारा निर्धारित राशि द्वारा एक थ्रेड की प्राथमिकता को उसके आधार से ऊपर बढ़ाया जाएगा। हर समय समाप्त होने पर, यदि कोई धागा बढ़ी हुई प्राथमिकता पर चल रहा है, तो उसकी प्राथमिकता 1 तक "क्षय" होगी जब तक कि वह आधार प्राथमिकता तक नीचे नहीं आता। यह आधार के नीचे क्षय नहीं करता है।

यह सोलोमन, रोसिनोविच, इओन्सक्यू, एट अल द्वारा विंडोज इंटरनेशनल में थ्रेड शेड्यूलिंग के अध्याय में प्रलेखित है ।

लेकिन यह आपके रिपोर्ट किए गए परिदृश्य से मेल नहीं खाता है, क्योंकि 1) थ्रेड मैनेजर में यह सब बढ़ावा देने और क्षय प्राथमिकता के क्षय का परिणाम नहीं दिखता है (क्योंकि टास्क मैनेजर रिपोर्ट प्राथमिकता वर्ग को रिपोर्ट करता है, थ्रेड प्राथमिकताएं नहीं); और 2: यह तंत्र अपने आधार की प्राथमिकता के नीचे कभी भी थ्रेड की प्राथमिकता नहीं तय करता है। जब आप प्रक्रिया की प्राथमिकता बदलते हैं तो आधार वही होता है।

यह कुछ ऐसा हो सकता है जो Visual Studio (deveng.exe) स्वयं कर रहा है। क्या आप इसे किसी अन्य प्रक्रिया के लिए देख रहे हैं?

यह विंडोज प्रदर्शन टूलकिट के साथ जांच की जा सकती है।


-1

आपके द्वारा बताई गई स्थिति में समायोजित प्रक्रिया प्राथमिकता असामान्य नहीं है।

चीजों को सरल बनाने के लिए, आइए इस स्थिति के बारे में सोचें: उच्च प्राथमिकता आमतौर पर इसका मतलब है कि प्रक्रिया "कम काम की प्रक्रिया (कुछ काम करने के लिए) की तुलना में अधिक बार" उठती है। यह देखते हुए कि आपकी प्रक्रिया बहुत अधिक (यादृच्छिक) डिस्क IO कर रही है, इसे उच्च प्राथमिकता पर रखने का अर्थ है कि यह केवल "जाग" होगा जो केवल डेटा को वापस करने के लिए डिस्क की प्रतीक्षा कर रहा है। चूंकि प्रोसेस स्विच एक महंगा / समय लेने वाला ऑपरेशन हो सकता है, डिस्क-इंटेंसिव प्रक्रिया की प्राथमिकता कम होने से प्रोसेसर का उपयोग बेहतर होता है। दूसरे शब्दों में, प्रक्रिया की प्राथमिकता को समायोजित करके, प्रोसेसर उस समय को प्रक्रियाओं के बीच स्विच करने के बजाय काम करने में अधिक समय खर्च कर सकता है।

मुझे लगता है कि यह अधिक संभावना है कि वीएस या प्रक्रिया खुद को फिर से प्राथमिकता दे रही है।


यह उत्तर प्रारंभिक समस्या को हल नहीं करता है, लेकिन कम से कम यह बताता है कि ऐसा क्यों होता है। धन्यवाद।
tym32167

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