Mit dieser Anwendung können Sie Einschränkungen für Windows -Prozesse festlegen. Zu diesem Zweck verwendet es ein Jobobjekt.
Inhaltsverzeichnis
Sie können die neuesten Versionen von Versionen von der Release -Seite herunterladen oder mit Schokoladen oder Winget installieren:
choco install procgov
# or
winget install procgovHier ist nicht viel zu sagen :) Es ist der Standardmodus, der aktiviert wird, wenn Sie Procgov aus der Eingabeaufforderung starten, um einen neuen Prozess zu starten oder an einen laufenden Anhang zu anhängen.
Bei Verwendung von Procgov können Sie feststellen, dass es manchmal eine zweite Instanz von sich selbst startet (es sei denn, Sie verwenden den Nomonitor -Switch). Diese zweite Instanz ist ein Jobmonitor, und Sie können ihn durch den Monitor -Switch in den Befehlszeilen -Argumenten erkennen. Es wird bis zum letzten Prozess in den überwachten Jobs am Leben bleiben. Es sollte eine maximale Instanz eines Jobmonitors pro Windows -Sitzung geben. Seine Aufgabe ist es, Arbeitsplätze mit Procgov zu überwachen. Der Monitor sollte direkt nach der Beendigung des letzten Prozesses in den überwachten Jobs beenden.
Diese Funktion befindet sich in einer Beta -Phase. Bitte verwenden Sie es mit Vorsicht und melden Sie alle erfahrenen Fehler.
Wenn Sie den Switch -Installieren Sie den Einstellungseinstellungen für persistische Anwendungen, speichern Procgov die Einstellungen in der Registrierung und erstellt einen Windows -Dienst mit dem Namen processGovernor. Standardmäßig verwendet es das Systemkonto und den %ProgramFiles%ProcessGovernor als Service -Basispfad. Sie können diese Einstellungen mit den Switches für den Service-Pfad , -service und -Service-Password verwenden. Wenn Sie den Installationsbefehl für eine andere Anwendung ausführen, fügt Procgov der Registrierung neue Daten hinzu, aber den vorhandenen Dienst wiederverwendet. Der Dienst sollte die aktualisierte Konfiguration nach kurzer Zeit aufnehmen.
Der ProcessGovernor -Service überwacht die Startprozesse und wendet die während der Installation vordefinierten Grenzen an.
Verwenden Sie, um den Service zu deinstallieren, den ungenstall -Switch. Der Dienst wird entfernt, wenn Sie die letzte gespeicherte Konfiguration entfernen. Wenn Sie zusammen mit dem Dienst alle gespeicherten Procgov-Daten entfernen möchten, verwenden Sie den allgemeinen Schalter.
Sie können Grenzen für einen neu erstellten Prozess oder einen bereits ausgeführten Prozess festlegen. Um einen laufenden Prozess einzuschränken, verwenden Sie den -P |--PID- Schalter, z.
procgov.exe --maxmem 40M --pid 1234 Um einen neuen Prozess mit den angewendeten Grenzen zu starten , übergeben Sie einfach den Prozessbildpfad als Procgov -Argument, z. procgov64 --maxmem 40M c:temptest.exe . Wenn Sie Parameter an den Zielprozess übergeben müssen, können Sie am besten -- Procgov -Parameter von den Zielprozess trennen, z. B.:
procgov.exe -m 100M -- test.exe -arg1 -arg2=val2 arg3Sie können demselben Jobobjekt mehrere Prozesse zuweisen. Wenn Sie den Parameter -P mehrmals mit unterschiedlichen Prozess -IDs verwenden, wendet Procgov beispielsweise für alle Prozesse die gleichen Grenzen an:
procgov.exe --maxmem 100M -p 1234 -p 1235 -p 1236Wenn einer der Prozesse bereits einem Procgov -Jobobjekt zugewiesen wurde, werden auch andere ihm zugewiesen.
Es ist auch möglich, zu aktualisieren, sobald die Grenzen festgelegt werden . Es gibt jedoch eine Anforderung: Die Prozesse können nicht unterschiedlichen Procgov -Jobs zugewiesen werden (daher müssen sie entweder im selben Job oder nicht zugewiesen sein). Um die Grenzwerte zu aktualisieren, führen Sie Procgov einfach aus, um neue Grenzen und die Zielprozess -ID (en) bereitzustellen. Procgov aktualisiert nur die angegebenen Grenzen. Schauen wir uns ein Beispiel an, um dieses Verhalten besser zu verstehen:
We set a CPU limit on a process 1234
procgov.exe --nowait -c 2 -p 1234
Then we run procgov again with the new CPU limit - procgov will update the existing job object
procgov.exe --nowait -c 4 -p 1234Mit dem Switch -Prozess -maxMem ( -M ) können Sie Gouverneur ein Limit für einen von einem Prozess festgelegten Speicher festlegen. Unter Windows -Festgespeicher ist tatsächlich ein privater Speicher, den der Prozess verwendet. Auf diese Weise können Sie den Prozess -Gouverneur verwenden, um Ihre .NET -Anwendungen (einschließlich Webanwendungen) auf Speicherlecks zu testen. Wenn der Vorgang das Gedächtnis auslässt, erhalten Sie schneller die OutofMemoryException .
procgov.exe -m 100M -c 2 notepad.exe
procgov.exe -m 120M -p 1234Mit den Switches -Maxws und -Minws können Sie die maximalen und minimalen Arbeitssatzgrößen (physische Speicherverwendung) des Prozesses steuern. Diese Option erfordert SeincreaseBasePriorityPrivilege . Stellen Sie daher sicher, dass Ihr Konto es hat (weitere Informationen in Ausgabe 69). Wenn Sie die Arbeitssatzgröße einschränken möchten, denken Sie daran, beispielsweise für beide Parameter immer Werte zu liefern, die mehr als Null sind:
procgov.exe --minws 1M --maxws 120M -p 1234Mit der Option -maxjobMem können Sie den maximal engagierten Speicher für alle Prozesse angeben, die zu einem bestimmten Jobobjekt gehören. Dies kann nützlich sein, wenn Sie die Ausbreitung von Arbeitsplätzen an Kinderprozesse ermöglichen oder dasselbe Jobobjekt verwenden, um mehrere Prozesse zu steuern, beispielsweise:
procgov.exe -r --maxjobmem 200M -- cmd.exe
procgov.exe -r --maxjobmem 1G -p 1234,1235,1236Mit dem CPU -Switch steuern Sie, welche Kerne Ihre Anwendung ausgeführt werden. Wenn Sie die CPU -Kernnummer als Dezimalwert angeben, kann Ihre Anwendung die angegebene Anzahl von Kernen verwenden.
Wenn Sie die CPU -Kernnummer als HEX -Wert (mit 0x Präfix) angeben, wird diese Zahl in der ersten Prozessorgruppe als Affinitätsmaske behandelt - wobei jedes Bit einen CPU -Kern darstellt (ab dem am wenigsten signifikanten Bit). Darüber hinaus können Sie die Affinitätsmaske mit einer mit Buchstaben 'G' und/oder einer Numa -Knotennummer vorangestellten Prozessorgruppennummer vorbereiten, die mit einem Buchstaben 'n' vorangestellt ist. Sie können auch die Affinität überspringen und die NUMA -Knoten- oder Prozessorgruppenaffinität verwenden. Gültige Beispielwerte: n1:g0:0xF , n1:g0 , n1 , g0 .
Der Parameter -CPU kann mehrmals definiert werden und die endgültige Affinitätsmaske wird eine Kombination der bereitgestellten Masken sein.
Schauen wir uns zwei Beispielanwendungen in einer CPU -intensiven Anwendung an. In einem ersten setzen wir die CPU -Kerngrenze auf zwei Kerne:
procgov.exe --cpu=2 TestLimit.exeEin CPU -Verwendungsdiagramm auf meiner Maschine sieht wie folgt aus:
In einer Sekunde setzen wir die CPU -Affinitätsmaske (mit der Hex -Notation):
procgov.exe --cpu=0x2 TestLimit.exeIn diesem Fall sieht ein CPU -Diagramm wie folgt aus (beachten Sie nur, dass der zweite Kern verwendet wird):
Beispiele für komplexere Affinitätseinstellungen:
# Use processor group 0 affinity from NUMA node 0 and 1 core from the group 1 in NUMA node 1
procgov.exe --cpu=n0:g0 --cpu=n1:g1:0x1 TestLimit.exe
# Use processor group 0 affinity and 1 core from the group 1
procgov.exe --cpu=g0 --cpu=g1:0x1 TestLimit.exeWenn Sie sich nicht sicher sind, welche CPU -Konfiguration im System vorhanden ist, können Sie Procgov ohne Paramien ausführen und sie drucken sie:
procgov.exe
#
# Use --help to print the available options.
#
# === SYSTEM INFORMATION ===
#
# NUMA Node 0:
# Processor Group 0: 000000000000000F (CPUs: 0,1,2,3)
# Processor Group 1: 0000000000000007 (CPUs: 4,5,6)
#
# NUMA Node 1:
# Processor Group 2: 000000000000000F (CPUs: 7,8,9,10)
# Processor Group 3: 0000000000000007 (CPUs: 11,12,13)
#
# Total Physical Memory (MB): 20 460
# Available Physical Memory (MB): 16 086
# Total Committed Memory (MB): 3 701
# Current Committed Memory Limit (MB): 21 740Mit der Option "cpu-rate" können Sie die maximale CPU-Rate für den Prozess festlegen. Wenn Sie auch die CPU -Affinität festlegen, gilt die Rate nur für die ausgewählten Kerne. Wenn Sie beispielsweise acht logische CPU -Kerne auf Ihrer Maschine haben und die CPU -Rate auf 100% und die CPU -Affinität auf 0x7 (erste vier Kerne) festlegen, beträgt die maximale CPU -Rate für diesen Prozess von den Überwachungstools 50% (wir laufen jedoch auf die Hälfte der CPU -Nummer).
Mit der Option -Timeout können Sie die maximale Zeit (Uhrzeit) definieren, die der Vorgang ausführen kann, bevor Procgov sie endet. Wenn die -rekursive Option festgelegt ist und die Zeitüberschreitung vergeht, endet Progov auch alle Prozesse, die Kinder vom Beginn der Überwachungssitzung begonnen haben.
Mit den Optionen -Process-Utime und -JOB-UTime können Sie eine Grenze für die maximale Ausführungszeit für einen Prozess für einen Prozess (mit der rekursiven Option auch alle Kinder) oder einen Job festlegen. Der letztere Fall ist mit der Option-rekursive Option sinnvoll, da die Ausführungszeit des Benutzer-Modus für den Prozess und seine Kinder eine Grenze festlegt.
Der Parameter -Priority -Parameter legt die Prozessprioritätsklasse überwachter Prozesse fest. Mögliche Werte umfassen: Idle , BelowNormal , Normal , AboveNormal , High , RealTime . Die höchsten drei Prioritäten erfordern SeincreaseBasePriorityPrivilege . Stellen Sie daher sicher, dass Ihr Konto es hat (weitere Informationen in Ausgabe 69).
Mit dem -Env Switch können Sie die Prozessumgebungsvariablen festlegen. Dieser Switch akzeptiert einen Pfad zu einer Textdatei mit den Variablenwerten, zum Beispiel:
COR_ENABLE_PROFILING=0x01
COR_PROFILER={32E2F4DA-1BEA-47ea-88F9-C5DAF691C94A}Der Procgov -Befehl könnte wie folgt aussehen:
procgov.exe --env c: t emp e nv.txt -c 2 dotnet_app.exeSie können die Umgebungsvariablen festlegen, wenn Sie einen neuen Prozess starten oder auf einen vorhandenen zugreifen.
Sie können Berechtigungen im Zielprozess mit dem Switch -Enable-Privilege -Switch aktivieren. Sie können mehrere Berechtigungen angeben, indem Sie diesen Parameter mehrmals verwenden, z. B.:
procgov.exe --enable-privilege=SeDebugPrivilege --enable-privilege=SeShutdownPrivilege notepadDenken Sie daran, dass Sie in Windows dem Prozess -Token keine neuen Berechtigungen hinzufügen können. Sie dürfen vorhandene nur vorhanden sein. Sie können die verfügbaren Prozessberechtigungen im Prozesshacker oder im Prozess -Explorer überprüfen. Überprüfen Sie die Dokumentation, um ein bestimmtes Berechtigung zu erhalten, um zu erfahren, wie Sie es für einen bestimmten Benutzer zur Verfügung stellen (z. B. müssen Sie möglicherweise Gruppenrichtlinien aktualisieren).
Im Folgenden finden Sie möglicherweise eine Liste von Personen, die zu diesem Projekt beigetragen haben. Danke schön!