it-swarm.com.de

Verhindern, dass der .NET Runtime Optimization Service im Akkubetrieb ausgeführt wird?

Als ich heute Morgen meinen Laptop öffnete, hatte er sich selbst neu gestartet (nach der Installation von Updates). Jetzt verbraucht der .NET Runtime Optimization Service (ngen?) Ziemlich viel CPU, während der Computer im Akkubetrieb ist. Ich frage mich, gibt es eine Möglichkeit, Windows zu bitten, diese Aufgaben zu verschieben, bis der Laptop angeschlossen ist? Ich hatte den Laptop über Nacht angeschlossen, aber 30% meines Akkus sind nach weniger als einer Stunde verbraucht, was nicht die übliche Situation ist.

Mein Computer war währenddessen nicht inaktiv, daher gehe ich davon aus, dass er nach einem .Net Framework-Update aus diesem Artikel Assemblys mit hoher Priorität kompiliert .

Ich habe den Windows-Update-Verlauf überprüft und über Nacht ein kumulatives Update installiert, während es eingesteckt war. ( https://support.Microsoft.com/en-ie/help/4038788/windows-10 -update-kb4038788 ). Ich wünschte, Windows würde .net-Optimierung als Teil dieses Prozesses ausführen, anstatt darauf zu warten, dass ich den Laptop im Akkubetrieb verwende.

Task Manager

8
user114447

Die kurze Antwort lautet: Nein, Sie können nicht zuverlässig aufschieben (und Sie sollten es nicht versuchen). Die einzige konsistente/nützliche Option, die ich gefunden habe, war, sie zum Abschluss zu zwingen und sie nicht im Hintergrund lauern zu lassen.

Wenn Sie versuchen, einige CPU-Zyklen im Akkubetrieb zu sparen (oder in meinem Fall einen Server daran hindern, ngen auszuführen, nachdem Sie ihn nach Windows-Updates wieder in Betrieb genommen haben), können Sie ngen am besten zwingen, sich selbst auszuführen. Für einen Desktop-PC bieten sich zwei Optionen an:

  1. Erstellen Sie eine .bat- oder .ps1-Datei auf Ihrem Desktop mit dem entsprechenden Befehl ngen. Doppelklicken Sie einfach und warten Sie, bis ngen geschlossen ist, bevor Sie den Stecker ziehen. Wenn Sie das Skript stattdessen in Ihrem Windows-Ordner erstellen und auf Ihrem Desktop eine Verknüpfung zu ihm herstellen, können Sie es auch mit Command oder Powershell Prompt oder über das Dialogfeld Ausführen nach Bedarf ausführen (vor dem Trennen/nach einem Update).

  2. Eine andere Option, die funktionieren sollte, besteht darin, eine geplante Task zum Ausführen des obigen Skripts zu verwenden. Führen Sie es beim Start ohne angemeldeten Benutzer als Administrator aus. Wenn Ihr Laptop Updates über Nacht installieren und neu starten kann, sollte dies problemlos funktionieren.

Um ngen auszuführen, benötigen Sie nur einen der folgenden Befehle, verwenden Sie die erste/geeignetste Option für Ihr System:

  • .Net 4 oder besser auf 64bit C:\Windows\Microsoft.NET\Framework64\v4.0.30319\ngen.exe executeQueuedItems

  • .Net 4 oder besser auf 32bit C:\Windows\Microsoft.NET\Framework\v4.0.30319\ngen.exe executeQueuedItems

  • .Net 3 oder weniger auf 64bit C:\Windows\Microsoft.NET\Framework64\v2.0.50727\ngen.exe executeQueuedItems

  • .Net 3 oder weniger auf 32bit C:\Windows\Microsoft.NET\Framework\v2.0.50727\ngen.exe executeQueuedItems

Unten sehen Sie die minimale Ausgabe von ngen, wenn sich keine Elemente in der Warteschlange befinden:

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.

Wenn ngen.exe mit executeQueuedItems ausgeführt wird, werden alle ausstehenden Aufgaben so schnell wie möglich ausgeführt. Normalerweise läuft ngen auf einem Hintergrundthread mit niedriger Priorität (und beginnt anscheinend zufällig). Die Idee dabei ist, dass andere CPU-Prozesse nicht ausgehungert werden sollten - obwohl dies nicht immer funktioniert. Das interaktive Ausführen von ngen ist schneller als das Ausführen im Hintergrund - wirkt sich jedoch stärker auf die Leistung aus. Wie lange es dauert, hängt von Ihrer Hardware ab und wie viele/welche nativen Images neu kompiliert werden müssen.

1
MisterSmith