Ich habe Quad-Core-CPU mit aktiviertem Hyper-Threading. Ich habe also 8 logische Kerne. Ich möchte meine Anwendung auf die Verwendung von nur 4 Kernen beschränken und möchte, dass diese 4 Kerne unterschiedliche physische Kerne sind. Welche Taskset-Optionen (Kernnummern) soll ich verwenden? ::
- Task-Set -c 0,1,2,3 Befehl oder
- Task-Set -c 0,2,4,6 Befehl
Vielen Dank.
linux
unix
central-processing-unit
multi-threading
hyperthreading
Artem Bergkamp
quelle
quelle
Antworten:
Sie können sehen, welche Kerne sich auf welchen Prozessoren befinden, indem Sie sich ansehen
/proc/cpuinfo
. Zum Beispiel sehen Sie auf einem Computer mit einer Dual-Core-CPU:für den ersten Kern des Prozessors und:
auf dem zweiten.
Im Allgemeinen denke ich, dass Sie möchten:
oder:
quelle
processor:0
ist aufcore:0
undprocess:1
ist aufcore:1
. Diese beiden Prozessoren befinden sich auf unterschiedlichen Kernen. Unter der Annahme, dass das Muster weiterhin besteht, sollte das Argumenttaskset
lauten-c 0,1,2,3
.Möglicherweise möchten Sie einen Blick auf CPU Set (cset) werfen , um eine CPU- Schutzgruppe für Ihre Anwendung zu erstellen. Auf diese Weise können Sie sicherstellen, dass echte Kerne für die wichtige Arbeit verwendet werden. Normalerweise deaktiviere ich Hyperthreading (auf Nehalem-Systemen) für meine Echtzeitanwendungen und Anwendungen mit geringer Latenz.
Hier ist ein Tutorial zum Erstellen von Gruppen von CPUs für bestimmte Anwendungen / Prozesse mit cset, das etwas besser organisiert ist als das Task-Set. https://rt.wiki.kernel.org/index.php/Cpuset_management_utility/tutorial
Informationen zum Bestimmen der Anzahl der Kerne und der Standortzuweisungen finden Sie unter: http://dag.wieers.com/blog/is-hyper-threading-enabled-on-a-linux-system
Eine kurze Ausführung des Dienstprogramms, das auf einem Quad-Core-Nehalem mit aktiviertem Hyperthreading verknüpft ist, zeigt:
quelle
Sie können wie folgt verwenden:
taskset -c -p 0-3 pid
quelle