Linux: Prozesse an CPU-Kerne binden

Wie weise ich eine prozessorlastige Multi-Thread-Anwendung an, nur drei der vier Kerne meines Quad-Core-Prozessors zu verwenden?

In Pocket speichern vorlesen Druckansicht
Lesezeit: 1 Min.
Von
  • Thorsten Leemhuis

Wie weise ich eine prozessorlastige Multi-Thread-Anwendung an, nur drei der vier Kerne meines Quad-Core-Prozessors zu verwenden?

Das gelingt mit dem Programm „taskset“, das zur Werkzeugsammlung „util-linux-ng“ gehört. Die ist bei den meisten Linux-Distributionen bereits vorinstalliert.

Mit beispielsweise dem Befehl

taskset -c 0-2 make -j 6

verteilt der Scheduler alle von make gestarteten Compiler-Jobs nur auf die ersten drei Prozessor-Kerne (0 bis 2), sodass der vierte für andere Aufgaben frei bleibt.

Dieser Aufruf funktioniert auch mit einer richtigen Multi-Thread-Software. Wenn Sie die Zuordnung eines bereits laufenden Programms ändern wollen, dann geben Sie statt des Programmaufrufs den Parameter „-p“ gefolgt von der ID des jeweiligen Prozesses an (Process Identifier, PID) an. Statt den Nummern der CPU-Kerne kann man auch eine Bitmaske angeben, um die Prozessor-Kerne zuzuordnen – Details dazu liefert man taskset.

Normalerweise verteilt der für die Zuweisung von Prozessorzeit zuständige Scheduler des Linux-Kernels die Prozesse aber so geschickt auf die verfügbaren Prozessorkerne, dass man gar nicht eingreifen muss. Da manuelle Eingriffe manchmal sogar kontraproduktiv sind, sollte man nur mit einem triftigen Grund zu taskset greifen.

(thl)