![Wie kann ich sicherstellen, dass auf einem bestimmten Prozessor/Kern genau ein Prozess ausgeführt wird?](https://rvso.com/image/1313333/Wie%20kann%20ich%20sicherstellen%2C%20dass%20auf%20einem%20bestimmten%20Prozessor%2FKern%20genau%20ein%20Prozess%20ausgef%C3%BChrt%20wird%3F.png)
Ich möchte dies tun, damit ich meine Prozesse genau auf ihre Geschwindigkeit testen kann und einfach um die Illusion der Kontrolle zu haben.
Vielleicht möchte ich einen Prozessor für spezielle Programme reservieren. Vielleicht möchte ich meinen eigenen Prozessoptimierer schreiben. Wer weiß. Die Möglichkeiten sind in meinen Augen endlos.
Ist das in jedem Betriebssystem möglich? Wenn nicht, warum nicht? Wenn wir den Speicher unterteilen dürfen, warum können wir dann nicht eine solche Kontrolle über die Prozessoren haben?
Danke.
Antwort1
Unter LinuxCPU-Setssollte dafür funktionieren.
Antwort2
Theoretisch ist das möglich. Der einfachste Weg, etwas Ähnliches zu erreichen, wäre eine Virtualisierungsplattform, mit der Sie einer bestimmten VM bestimmte CPUs/Kerne zuweisen können. Dann könnten Sie auf einer bestimmten VM genau den gewünschten Prozess ausführen (natürlich mit einem Minimum an Betriebssystem-Overhead).
Antwort3
Am einfachsten geht das, indem Sie die Prozessoraffinität für einen bestimmten Prozess festlegen oder dem Betriebssystem mitteilen, auf welchen logischen CPUs (Kernen) dieser Prozess ausgeführt werden darf. Wenn Sie im Windows-Task-Manager mit der rechten Maustaste auf einen Prozess klicken und auswählen Set Affinity...
, wird ein Fenster angezeigt, das ungefähr so aussieht:
In Linux-basierten Systemen können Siemachen Sie dasselbe mit dem taskset
Dienstprogrammoder indem Sie im Eintrag der Prozesse das entsprechende CPU-Maskenflag setzen /proc
.
Leider gibt es keine einfache Möglichkeit, alle Prozesse von einem bestimmten Prozessor zu entfernen oder beim Start eines Prozesses automatisch eine bestimmte Maske festzulegen. Sie benötigen ein Skript, um das System auf neue Prozesse zu überwachen und die gewünschte Affinität festzulegen.