Windows 7: Task Scheduler / Engine reduziert das Working Set / Memory von Anwendungen. Gibt es überhaupt einen Stopp?
Ich habe versucht, einige Auto-HotKey-Skripts mithilfe des Task-Schedulers automatisch zu starten, da die Skripts mit Administratorrechten ohne UAC-Eingabeaufforderung ausgeführt werden können.
Normalerweise schlagen die Skripts nach einigen Stunden fehl. Bei Ausführung über den Ordner UAC / explorer.exe / startup werden alle diese Skripts mehrere Tage ausgeführt. (Die einzige, die ich über Task Scheduler zuverlässig gesehen habe, ist eine einfache, die ein Meldungsfeld "Hello World" anzeigt.)
Durch die Verwendung von Process Explorer stelle ich fest, dass die Arbeitssets der untergeordneten Prozesse von taskeng.exe immer reduziert wurden (von ~ 3.000 KB auf 512 KB oder so), während die untergeordneten Prozesse UAC / explorer.exe konstant blieben.
Ich habe versucht, AHK-Code zu verwenden, um zu sehen, ob er die Größe des Arbeitssatzes ändern kann:
pid := DllCall("GetCurrentProcessId") handle := DllCall("OpenProcess", "UInt", 0x001F0FFF, "Int", 0, "Int", pid) DllCall("SetProcessWorkingSetSize", "UInt", handle, "Int", 10000000, "Int", 20000000) DllCall("CloseHandle", "Int", handle)
Es schien keine Schlepparbeit zu geben, daher bin ich nicht sicher, ob das Problem behoben werden kann.
Die Lösung bestand darin, die ausführbare Datei als 64-Bit statt als 32-Bit zu kompilieren. Ich hatte das vorher nicht ausprobiert, da die 32-Bit-Version über die Startup-Ordner in den Monaten, in denen ich sie verwendet habe, einwandfrei funktioniert hat.
Ich glaube, das Problem rührte von dem Tastaturhaken her, der in den Speicher geladen und dann während der Speicherbereinigung entladen wurde. Es waren nur Hotkeys mit Tastaturhaken betroffen, nicht die mit RegisterHotkey zugewiesenen.
Ich verwende die 64-Bit-ausführbaren Dateien nun schon seit über einer Woche und keines ist ausgefallen, obwohl einige etwas zu langsam reagierten (dies hat möglicherweise etwas mit Hintergrundprozessen oder Chrome-Ressourcen zu tun). Das Beenden oder Neustarten der übergeordneten Prozesse taskeng.exe und svchost könnte dieses Problem beheben, da dies die einzige Möglichkeit war, die Neuzuordnung des Arbeitssatzes zu beenden (das 32-Bit-Problem wurde immer noch nicht behoben, und durch das Beenden des übergeordneten svchost wurden einige Probleme verursacht.) ).
[2018-10-03 Update: Ich habe das Problem grundsätzlich gelöst.] Task Scheduler kann festlegen, dass Aufgaben mit unterschiedlichen Prioritäten ausgeführt werden, die Benutzeroberfläche zeigt sie jedoch nicht an.
Um die Priorität zu ändern:
- Exportieren Sie die Aufgabe als XML-Datei.
- Bearbeiten Sie die XML-Datei und ändern Sie das Priority-Tag. Auf dieser Seite finden Sie eine Prioritätenliste.
- Setzen Sie das StopOnIdleEnd auf "false". (Habe das nicht getestet, aber es könnte zu Verzögerungen bei der Maus / Eingabe geführt haben.)
- Importieren Sie die geänderte XML-Datei als Task und es sollte funktionieren.
Durch das Erhöhen der Priorität werden auch die Speicher- und E / A-Priorität erhöht.
Das Kompilieren von AHK-Skripts als 64-Bit ist möglicherweise noch erforderlich.
0 Antworten auf die Frage
Verwandte Probleme
-
2
Erinnert sich Windows 7 Home Premium an Netzwerkfreigaben-Passwörter?
-
4
Wie sperre ich rechtsbündige Symbolleisten in Windows 7, ohne dass sie schrecklich aussehen
-
4
Windows 7 "Aero Snap" -Funktion für Ubuntu GNOME
-
3
Meine zweite Festplatte ist in Windows 7 nicht sichtbar
-
7
Wie ersetze ich Notepad in Windows 7?
-
2
Wie werden Windows 7-Taskleistensymbole in zwei Reihen angeordnet?
-
1
Probleme beim Standby unter Windows 7
-
6
Wie steuern Sie die Windows 7-Snap-Funktion mit zwei Monitoren?
-
10
Wie aktualisiere ich von Windows 7 RC auf Windows 7 RTM?
-
3
Welchen Spyware-Schutz gibt es für Windows 7?