Wie kann ich die Standardaffinität für jeden Prozess in Windows festlegen?

13761
Nathan Fellman

Ich möchte einige Benchmarks unter Windows 7 ausführen. Diese Benchmarks beziehen sich auf Hyper-Threading auf einer Multi-Core-CPU. Dafür möchte ich sicherstellen, dass nur die Benchmarks auf einem eigenen logischen Prozessor laufen. Gibt es eine Möglichkeit, Windows anzuweisen, bestimmte logische Prozessoren nicht zu planen, es sei denn, ich erlaube es explizit für einen Prozess?

Es ist keine Option, dies manuell im Task-Manager für einen Prozess zu tun. Ich möchte dies wiederholt tun können (ich werde viele Benchmarks viele Male ausführen). Ich weiß, wie ich programmgesteuert die Affinität für den laufenden Prozess einstellen kann.

Gibt es eine Konfiguration, mit der ich die Standardaffinität für alle Prozesse festlegen kann?

4
Es könnte besser sein, "System-Dinge" zu stoppen, damit sie nicht im Weg stehen und die Priorität erhöhen und die Affinität für die Benchmarks selbst festlegen, sodass andere Funktionen nur die übrig gebliebenen nutzen können. Was tun Sie, wenn der Benchmark selbst stark auf verschiedene Funktionen angewiesen ist, die Sie zur Seite parken? könnte die Ergebnisse beeinflussen? EX: Viele Bänke für Disk I / O verwenden Caches, auch wenn diese angeblich umgangen werden. Psycogeek vor 13 Jahren 1
Es gab ein altes Programm für XP, das ich für diesen Zweck verwendet habe, nicht sicher, ob es jetzt zum Download gefunden werden kann ... http://www.tomshardware.com/reviews/bang-dual-processing-buck815-3 .html Moab vor 13 Jahren 0
Ich habe eine Kopie von "THG Task Assignment Manager", wenn Sie es unter W7 ausprobieren möchten. Moab vor 13 Jahren 0

3 Antworten auf die Frage

10
Tom Wijsman

Process Lasso unterstützt das! Es gibt eine kostenlose und kostenpflichtige Version, CPU-Affinitäten sind immer kostenlos ...

Füllen Sie einfach ein *in dem Name matchFeld, das alle Prozesse zielen wird.

Ich denke, Sie können Ihre Programme dann hinzufügen, um eine andere Affinität zu haben. Die Reihenfolge, in der Sie die Regeln eingeben, könnte von Bedeutung sein. Sie können auch More strictly enforce default affinitiesunten ankreuzen.

enter image description here

Ich verwende ein ähnliches Dienstprogramm für Folding @ home. surfasb vor 13 Jahren 0
Beachten Sie, dass einige "Systemprobleme" wie Interrupt-Handling und DPCs nicht betroffen sind. Möglicherweise gibt es auch Permiision-Probleme, um Affinitäten für System-Threads und geschützte Systemprozesse festzulegen. Jamie Hanrahan vor 8 Jahren 0
Ich habe genau das gemacht, was mit diesem Tool gefragt wurde. Ich fügte eine * -Regel für logische Kerne 0-3 und eine "Javaw" -Regel für 4-7 hinzu und verwendete dann JNA aus meinem Java-Programm, um die Affinität zu den Kernen 4 und 6 festzulegen. Ich arbeitete wie ein Zauber, meine 2 Threads hatten alle Kerne sich. Sogar bestätigte Speichersichtbarkeit mit sun.misc.Unsafe-Speicher- / Ladezäunen wird wirksam Alexandros vor 6 Jahren 0
3
Pubby

Wenn Sie in Task-Manager-Prozesse gehen und mit der rechten Maustaste auf den Prozess klicken, sollten Sie die Affinität auswählen können.

Um einen Core zu deaktivieren, können Sie msconfig verwenden. Ich glaube nicht, dass Sie es pro Prozess aktivieren können.

OK, ich hätte klarer sein sollen. Ich möchte die Affinität aller ** Prozesse festlegen, um nur die logischen Prozessoren 0 und 1 zu verwenden, und nur die Prozesse aktivieren, die ich verwenden möchte, um 2 und 3 zu verwenden. Es ist keine Option, manuell für jeden Prozess zu arbeiten. Nathan Fellman vor 13 Jahren 0
@NathanFellman Ja, das habe ich gemerkt, nachdem ich gepostet habe. Haben Sie versucht, sie mit msconfig-> Systemkonfiguration-> erweitert zu deaktivieren? Pubby vor 13 Jahren 0
nein, ich weiß nicht wie das geht :-) Nathan Fellman vor 13 Jahren 0
@NathanFellman Ich habe es von hier aus gesehen: http://en.kioskea.net/faq/616-multicore-cpu-how-to-dis-ableable-a-core Nie gemacht, also nicht sicher, ob es in Ihrer Situation funktioniert. Pubby vor 13 Jahren 0
1
Simon Sheehan
  1. Öffnen Sie Ihr Startmenü
  2. Geben Sie msconfig, und drücken Sie die Eingabetaste
  3. Gehen Sie zu der Registerkarte, die als Boot markiert ist
  4. Markieren Sie das Betriebssystem Ihrer Wahl und klicken Sie auf Erweiterte Optionen.
  5. Überprüfen Sie die Anzahl der Prozessoren und verwenden Sie so viele, wie Sie möchten.

Dies bewirkt, dass Windows (und alles andere) nur die angegebene Anzahl von Prozessoren erkennt und verwendet . So wird der Rest effektiv vollständig deaktiviert. Es wird (und kann) niemals mehr als die Anzahl der verfügbaren Kerne verwenden.

enter image description here

Aber kann ich damit den "deaktivierten" Prozessoren nur bestimmte Prozesse zuweisen? Es scheint mir, dass dadurch * alle * Prozesse von dem Prozessor, den ich behalten möchte, frei gehalten werden, * einschließlich * meines Benchmarks. Nathan Fellman vor 13 Jahren 0
@ NathanFellman Ich bin mir eigentlich nicht ganz sicher - vielleicht könntest du das testen? Simon Sheehan vor 13 Jahren 0
@NathanFellman: `/ NUMPROC = number` legt die Anzahl der Prozessoren fest, die Windows beim Start ausführen wird. Mit dieser Option können Sie ein Multiprozessorsystem zwingen, nur die von Ihnen angegebene Anzahl von Prozessoren (Anzahl) zu verwenden. Mit diesem Schalter können Sie Leistungsprobleme und defekte CPUs beheben. - Weitere Informationen finden Sie unter [Support] (http://support.microsoft.com/default.aspx?scid=kb;en-us;833721). Dies bedeutet, dass die Prozessoren nicht mehr verwendet werden können, sobald Sie sie einschränken. Tom Wijsman vor 13 Jahren 1