So weisen Sie CPU-Kerne mit Taskset unter Linux zu

Die Multi-Core-Verarbeitung kann Vor- und Nachteile haben, und manchmal müssen Sie CPU-Kerne manuell Programmen zuweisen (auch bekannt als „CPU-Affinität“), um die beste Leistung zu erzielen. Unter Linux ist das primäre Tool Aufgabensatz. Das klingt möglicherweise beängstigend, aber wir werden es in einfache Schritte unterteilen, um den Prozess zu vereinfachen.
Grundlagen zu Aufgabensätzen
Die Verwendung von Tasksets kann in zwei Teile unterteilt werden: CPU-Affinität zu zu startenden Programmen und zu bereits ausgeführten Programmen. Das Starten von Programmen ist das einfachere von beiden, also fangen wir dort an. Ein Startbefehl sieht so aus:
tasket -c CPU-Kernnummer(n) AnwendungBevor Sie die Nummer des CPU-Kerns eingeben, den Sie zuweisen möchten, vergessen Sie nicht, dass ein Unix-Nummerierungsschema normalerweise bei 0 beginnt, sodass Ihr erster Kern 0 ist, Ihr zweiter Kern 1 und so weiter. Somit verfügt eine Dual-Core-Maschine über die Kerne 0 und 1 und eine Quad-Core-Maschine über die Kerne 0, 1, 2 und 3.
Nehmen wir an, Sie möchten Audacity auf einem Dual-Core-System und auf Ihrem zweiten Core ausführen. Dieser Befehl wäre:
Lesen Sie auch: Was beeinflusst die CPU-Leistung? Hier finden Sie alles, was Sie wissen müssen
Verwendung mehrerer Kerne
Auf einem unserer Computer ließ Chrome beim Streamen von Videos manchmal Frames fallen, verhielt sich jedoch wie gewohnt, wenn es zwei Kernen zugewiesen wurde. Wenn Sie dasselbe auf einem Quad-Core-System versuchen und Chrome den Kernen drei und vier zuweisen möchten, lautet der Befehl:
Aufgabensatz -c 2,3 Google-ChromeSie müssen den sequentiellen Kernen keine CPU-Affinität zuweisen – Sie können beliebige Kerne nach dem Zufallsprinzip auswählen. Nehmen wir an, Sie haben einen Computer mit sechs Kernen und möchten Chrome auf den Kernen zwei und sechs verwenden. Sie würden den Befehl eingeben:
Aufgabensatz -c 1,5 Google-ChromeSie können einen Bindestrich auch verwenden, um eine Anwendung auf mehrere Kerne zu verteilen. Beispielsweise werden viele ältere Programme oder Systemfunktionen standardmäßig auf Ihrem ersten Kern ausgeführt. Was wäre, wenn Sie den ersten Kern so frei wie möglich lassen und gleichzeitig eine große Anwendung auf alle anderen Kerne verteilen möchten?
Nehmen wir an, Sie haben ein System mit acht Kernen und möchten Steam vom zweiten bis zum achten Kern ausführen. Dieser Befehl wäre:
Affinität für ein bereits gestartetes Programm ändern
Taskset beschränkt sich nicht nur auf das Starten von Anwendungen. Sie können auch die CPU-Affinität für ein Programm ändern, das bereits ausgeführt wird. Bevor Sie jedoch die Affinität einer Anwendung ändern können, müssen Sie zunächst deren Prozess-ID (oder kurz PID) kennen.
Um die PID Ihrer Anwendung herauszufinden, können Sie versuchen, den Systemmonitor Ihres Desktops zu verwenden. Der schnellste Weg ist jedoch, einfach top zu verwenden. Es überrascht nicht, dass es den folgenden Befehl verwendet:
Die Namen aller ausgeführten Befehle werden auf der rechten Seite des Bildschirms angezeigt. Die entsprechenden Prozess-IDs finden Sie links.
Notieren Sie sich Ihre PID, da Sie sie gleich verwenden werden. Für dieses Beispiel verwenden wir VLC, das gerade ein hochauflösendes Matroska-Video auf einem älteren PC mit sechs Kernen abspielt. Wir experimentieren mit verschiedenen CPU-Affinitäten, um die beste Leistung aus VLC herauszuholen.
Um die Affinität eines bestehenden Prozesses zu ändern, sieht die Syntax wie folgt aus:
taskset -cp core-numbers PIDWenn Sie unseren Screenshot oben sehen können, lautet die Prozess-ID von VLC 20485. Wir werden versuchen, VLC auf dem vierten, fünften und sechsten Kern auszuführen, was in der Unix-Nummerierung 3-5 sein wird. Nach all dem lautet der Befehl also:
Was aber, wenn Sie die bestehende Affinität überprüfen möchten, bevor Sie sie ändern? Geben Sie dazu keine Kernnummern ein, und taskset sagt Ihnen, wie die Affinität zugewiesen wird. Wenn wir also den letzten Befehl ändern in:
Es zeigt uns, dass VLC auf alle Kerne verteilt ist.
Versuchen wir es noch einmal mit einem anderen Programm. Nehmen wir an, wir führen stattdessen eine große Matroska mit SMPlayer aus und SMPlayer wurde bereits gestartet. Oben steht, dass die PID 16058 ist.
Aber zuerst wollen wir wissen, welche Affinität besteht. Wenn wir den Befehl mit dem Schalter -cp, aber ohne Kernnummern verwenden, können wir sehen, dass die Affinität derzeit auf alle Kerne verteilt ist.
Jetzt können wir versuchen, SMPlayer mit dem folgenden Befehl auf dieselben drei Kerne wie beim VLC-Experiment zu verteilen:
Das ist einfach, nicht wahr? Wenn Sie Ihren PC einem Benchmarking unterziehen möchten, lesen Sie unseren Leitfaden zu 8 nützlichen Tools zum Stresstest Ihrer CPU.

Schreibe einen Kommentar