बैटरी पर चलने से .NET रनटाइम ऑप्टिमाइज़ेशन सेवा रोकें?


11

जब मैंने आज सुबह अपना लैपटॉप खोला, तो उसने खुद को रिबूट किया (अपडेट्स इंस्टॉल करने के बाद)। अब .NET रनटाइम ऑप्टिमाइज़ेशन सर्विस (ngen?) CPU का काफी उपयोग कर रही है, जबकि कंप्यूटर बैटरी पर है। मुझे आश्चर्य हो रहा है कि क्या विंडोज को इन कार्यों को तब तक के लिए पूछने का कोई तरीका है जब तक कि लैपटॉप को प्लग नहीं किया जाता है? मेरे पास रात भर में लैपटॉप प्लग था लेकिन मेरी बैटरी का 30% उपयोग के एक घंटे से भी कम समय के बाद चला गया, जो सामान्य स्थिति नहीं है।

ऐसा करते समय मेरा कंप्यूटर निष्क्रिय नहीं था, इसलिए मैं इस लेख से .Net फ्रेमवर्क अपडेट के बाद इसकी उच्च-प्राथमिकता वाली असेंबलियों को संकलित करता हूं ।

मैंने विंडोज़ अपडेट इतिहास की जाँच की, और इसमें प्लग-इन करते हुए रात भर संचयी अद्यतन स्थापित किया था। ( https://support.microsoft.com/en-ie/help/4038788/windows-10-update-kb4038788 )। मैं चाहता हूँ कि विंडोज़ बैटरी पर लैपटॉप का उपयोग शुरू करने के लिए प्रतीक्षा करने के बजाय उस प्रक्रिया के भाग के रूप में .net अनुकूलन चलाएंगे।

कार्य प्रबंधक


मैंने बस एक ही सेवा को अचानक बहुत सीपीयू खाते हुए देखा और प्रशंसक जोर से हो गया। लेकिन मेरे मामले में यह ऐसा था जब मैंने कंप्यूटर को इस्तेमाल करने के 2 घंटे बाद सोने के लिए रखा। मैं सेवा को रोक नहीं सका (या तो विंडो में आपने डिटेल व्यू में नॉर के ऊपर पोस्ट किया है)। 5-10 मिनट के बाद यह खत्म हो गया था, इसलिए मुझे लगता है कि यह केवल कुछ मिनट इंतजार करने की बात है
हंसपुल

जवाबों:


5

संक्षिप्त उत्तर नहीं है, आप मज़बूती से ngen (और आप कोशिश नहीं करनी चाहिए), एकमात्र सुसंगत / उपयोगी विकल्प जो मुझे मिला वह उसे पूरा करने के लिए मजबूर कर रहा था और इसे पृष्ठभूमि में दुबकना नहीं छोड़ रहा था।

यदि आपकी बैटरी पर कुछ सीपीयू चक्रों को बचाने की कोशिश हो रही है (या मेरे मामले में एक सर्वर को विंडोज अपडेट के बाद सेवा में लौटने के बाद इसे चलाने से रोकना है) तो आपका सबसे अच्छा विकल्प है कि आप अपने आप को चलाने के लिए ngen को मजबूर करें। एक डेस्कटॉप पीसी के लिए, 2 विकल्प दिमाग में आते हैं:

  1. अपने डेस्कटॉप पर .bat या .ps1 फ़ाइल को नीचे उपयुक्त ngen कमांड के साथ बनाएं - बस डबल क्लिक करें और अपने अनप्लग से पहले ngen के बंद होने की प्रतीक्षा करें। यदि आप इसके बजाय अपने विंडोज फ़ोल्डर में स्क्रिप्ट बनाते हैं और इसे अपने डेस्कटॉप पर शॉर्टकट करते हैं, तो आप इसे आवश्यक रूप से निष्पादित करने के लिए कमांड या पॉवर्सशेल प्रॉम्प्ट या रन डायलॉग का उपयोग भी कर सकते हैं (अपडेट से पहले / अनप्लग करने से पहले)।

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

Ngen चलाने के लिए आपको केवल निम्न कमांड में से एक की आवश्यकता है, अपने सिस्टम के लिए पहले / सबसे उपयुक्त विकल्प का उपयोग करें:

  • .Net 4 या 64 बिट पर बेहतर C:\Windows\Microsoft.NET\Framework64\v4.0.30319\ngen.exe executeQueuedItems

  • .Net 4 या 32 बिट पर बेहतर C:\Windows\Microsoft.NET\Framework\v4.0.30319\ngen.exe executeQueuedItems

  • .Net 3 या 64bit पर कम C:\Windows\Microsoft.NET\Framework64\v2.0.50727\ngen.exe executeQueuedItems

  • .Net 3 या 32bit पर कम C:\Windows\Microsoft.NET\Framework\v2.0.50727\ngen.exe executeQueuedItems

नीचे कोई कतार वस्तुओं नहीं होने पर आपको न्यूनतम उत्पादन ngen से मिलता है:

PS C:\Users\Administrator> C:\Windows\Microsoft.NET\Framework64\v4.0.30319\ngen.exe executeQueuedItems
Microsoft (R) CLR Native Image Generator - Version 4.6.1586.0
Copyright (c) Microsoft Corporation.  All rights reserved.
All compilation targets are up to date.

जब ngen.exe को executeQueuedItemsइसके साथ चलाया जाता है, तो यह सभी लंबित कार्यों को जल्द से जल्द करने के लिए मजबूर करेगा। आम तौर पर ngen एक कम प्राथमिकता वाली बैकग्राउंड थ्रेड (और जाहिर तौर पर सिर्फ रैंडम पर शुरू होता है) पर चलता है, यह विचार सीपीयू की अन्य प्रक्रियाओं को नहीं करना चाहिए - हालांकि यह हमेशा काम नहीं करता है। अंतःक्रियात्मक रूप से रनिंग नेगन को पृष्ठभूमि में चलाने की तुलना में तेज है - लेकिन यह प्रदर्शन को अधिक प्रभावित करेगा। कितना समय लगता है यह आपके हार्डवेयर पर निर्भर करता है और कितने / किन देशी चित्रों को फिर से बनाने की आवश्यकता है।


अगर मैं अपनी मशीन बेकार (ठीक है, वास्तव में एक वर्चुअलबॉक्स VM) कुछ मिनटों के लिए छोड़ देता हूं तो ngen.exe सभी सीपीयू खाने लगती है। हालाँकि, यदि मैं किसी भी व्यवस्थापक cmd विंडो में ऊपर या किसी भी कमांड को चलाता हूं, तो मुझे जल्दी से "सभी संकलन लक्ष्य अप टू डेट हो जाते हैं।" :-( [ओह - मैं शायद उल्लेख किया जाना चाहिए था कि यह एक विकास मशीन है मुझे आश्चर्य है अगर एक दृश्य स्टूडियो प्रक्रिया मुसीबत खड़ी कर रहा है ...।]
mwardm
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.