Festlegen der Affinität in einem Skript / einer Stapeldatei

468
Harry Rogers

Das Festlegen der Affinität für einen bestimmten Prozess mit den folgenden Schritten funktioniert gut

PowerShell "get-process Notepad | %% { $_.ProcessorAffinity=1 }" 

Ich möchte die Prozessormaske für jede Instanz eines bestimmten Prozesses, auf die das Skript trifft, unterschiedlich einstellen. Das heißt, legen Sie die Affinität von Instanzen eines bestimmten Prozesses in einem Round-Robin-Stil fest. Jeder Instanz sollte der nächste verfügbare Kern zugewiesen werden

 instance 1 -> 00000001 (first core) instance 2 -> 00000010 (second core) instance 3 -> 00000100 etc.. instance 8 -> 10000000 (8th core) instance 9 -> 00000001 (back to the first core again) instance 10 -> 00000010 (second core again) 

und so weiter.

In der Regel gibt es zu jeder Zeit 10 bis 20 Instanzen des Prozesses, und das Skript wird alle paar Minuten nach einem Zeitplan ausgeführt, um die Last gleichmäßig auf alle Kerne zu verteilen.

Vielen Dank im Voraus für Ihre Anregungen.

0
Bei Ihrem Format ist es wahrscheinlich, dass [Affinität des Prozesses mit Windows-Skript in StackOverflow ändern] (https://stackoverflow.com/questions/19187241/change-affinity-of-process-with-windows-script) damit zusammenhängt. Sie wissen bereits, was zu tun ist und welche Befehle Sie benötigen. Ich bin mir also nicht wirklich sicher, was dein Problem ist? Verwenden Sie eine Variable und sind Sie fertig? Seth vor 6 Jahren 1
Entschuldigung, wenn ich nicht klar war. Es gibt eine Reihe von Instanzen des Prozesses I, für die die Affinität festgelegt werden soll. Mein Wunsch ist es, diese auf alle verfügbaren Kerne zu verteilen, damit jeder einen Kern erhält. Ich habe nach der Syntax / Logik eines Skripts gesucht, das mit 'n' Instanzen zurechtkommt - dh die Prozessormaske für jede gefundene Instanz anpassen. Vielen Dank Harry Rogers vor 6 Jahren 0
Nun, meine Erwähnung trifft noch zu Verwenden Sie eine Variable zum Zählen. Ihr Code kümmert sich bereits um N Instanzen. Das einzige, was Sie tun müssen, ist die Verwendung einer Variablen zum Zählen und möglicherweise ein Modulo für den Fall, dass Sie mehr als Kerne-Instanzen haben (das Modul wäre also die Anzahl der Kerne). Sie müssen diese Variable lediglich mit jeder Iteration Ihrer Schleife erhöhen und sie anstelle eines statischen Werts verwenden. Seth vor 6 Jahren 0
Danke, dass du dir das nochmal angeschaut hast, Seth. Ich denke, meine Frage bezieht sich mehr auf das Schreiben eines Skripts als a). Zählt Instanzen des gegebenen Prozesses und b) erreicht die Modulo-Arithmetik in einer Schleife. Ich habe einige andere Einträge gefunden, die mich in die richtige Richtung weisen und ich werde mehr über die Powershell-Syntax lesen Harry Rogers vor 6 Jahren 0

0 Antworten auf die Frage