Запобігти роботі .NET Optimization Services від роботи від акумулятора?


11

Коли я відкрив свій ноутбук сьогодні вранці, він перезавантажився (після встановлення оновлень). Зараз служба .NET Optimization Runtime Optimization (ngen?) Використовує зовсім небагато процесора, поки комп'ютер працює від акумулятора. Мені цікаво, чи можна попросити Windows відкласти ці завдання, поки ноутбук не підключений? У мене був підключений ноутбук протягом ночі, але 30% мого акумулятора втрачається менше ніж за годину використання, що не є звичайною ситуацією.

Мій комп’ютер не працював, коли це робив, тому я припускаю, що його складання збірок з високим пріоритетом після оновлення .Net Framework з цієї статті .

Я перевірив історію оновлень Windows, і було встановлено накопичувальне оновлення протягом ночі під час підключення. ( Https://support.microsoft.com/en-ie/help/4038788/windows-10-update-kb4038788 ). Я б хотів, щоб Windows запускала оптимізацію .net в рамках цього процесу, а не чекати, коли я почну використовувати ноутбук на батареї.

Менеджер завдань


Щойно я побачив, як той самий сервіс раптом з'їдає багато процесора, і вентилятор став гучним. Але в моєму випадку це було після того, як я клав комп'ютер спати через 2 години користування ним. Я не міг зупинити послугу (або у вікні, яке ви розмістили вище nore, у детальному поданні). Через 5-10 хвилин це закінчилося, тож я гадаю, що це лише питання зачекати кілька хвилин
hansaplast

Відповіді:


5

Коротка відповідь - ні, ви не можете надійно відкласти ngen (і ви не повинні намагатися), єдиний послідовний / корисний варіант, який я знайшов, - змусив його працювати до завершення і не залишати його ховатися у фоновому режимі.

Якщо ви намагаєтесь зберегти кілька циклів процесора на акумуляторі (або в моєму випадку зупинити сервер від запуску ngen після повернення його в сервіс після оновлень Windows), найкращим варіантом буде змусити ngen запускатись самостійно. Для настільного ПК приходять до уваги 2 варіанти:

  1. Створіть на робочому столі файл .bat або .ps1 за допомогою відповідної команди ngen нижче - просто двічі клацніть та зачекайте, коли ngen закриється, перш ніж ви вийдете з розетки. Якщо ви створили сценарій у папці Windows замість цього і ярлик до нього на робочому столі, ви також можете скористатися командою або командою Powershell або діалоговим вікном «Запустити», щоб виконати його за необхідності (перед тим, як вимкнути підключення / після оновлення).

  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 або менше на 64 біт C:\Windows\Microsoft.NET\Framework64\v2.0.50727\ngen.exe executeQueuedItems

  • .Net 3 або менше на 32 біт 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 працює на фоновому потоці з низьким пріоритетом (і, мабуть, просто починається навмання), ідея полягає в тому, що він не повинен голодувати іншими процесами процесора - хоча це не завжди працює. Запуск ngen в інтерактивному режимі швидше, ніж залишати його працювати у фоновому режимі - але це більше вплине на продуктивність. Скільки часу це потрібно, залежить від вашого обладнання та скільки / які власні зображення потрібно перекомпонувати.


Якщо я залишу свою машину в режимі очікування (ну, власне, Virtualbox VM) на кілька хвилин, тоді ngen.exe почне їсти весь процесор. Однак якщо я запускаю будь-яку або всі команди вище у вікні cmd адміністратора, я швидко повертаюсь "Усі цілі компіляції оновлені". :-( [О - я, мабуть, мав би сказати, що це машина розвитку. Цікаво, чи створює проблеми Visual Studio неприємності ...]
mwardm
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.