Taskset Kernnummern Frage

7

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.

Artem Bergkamp
quelle
Um die Linux-Terminologie zu verdeutlichen, haben Sie 8 logische "Prozessoren", die auf 4 physische "Kerne" verteilt sind. Sie möchten 4 logische Prozessoren auswählen, die 4 verschiedenen Kernen entsprechen.
Mark Lakata

Antworten:

5

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:

processor   : 0
(snip)
core id     : 0
cpu cores   : 2

für den ersten Kern des Prozessors und:

processor   : 1
(snip)
core id : 1
cpu cores   : 2

auf dem zweiten.

Im Allgemeinen denke ich, dass Sie möchten:

taskset -c 0,1,2,3

oder:

taskset -c 4,5,6,7
malcolmpdx
quelle
1
Äh. nur neugierig. Wenn "Prozessor 0" dem [physischen] Kern 0 entspricht und "Prozessor 1" dem [physischen] Kern 1 entspricht ... bedeutet das nicht, dass für die Auswahl aller 4 Kerne unbedingt sowohl 0 als auch 1 ausgewählt werden müssen? (Das heißt, 0/2/4/6 würde nur physische Kerne 0 und 2 verwenden?)
JamesTheAwesomeDude
1
In Ihrem Beispiel processor:0ist auf core:0und process:1ist auf core:1. Diese beiden Prozessoren befinden sich auf unterschiedlichen Kernen. Unter der Annahme, dass das Muster weiterhin besteht, sollte das Argument tasksetlauten -c 0,1,2,3.
Mark Lakata
1

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:

[root@XXX ~/hwloc-1.0.3]# ./utils/lstopo 
Machine (7980MB) + Socket #0 + L3 #0 (8192KB)
  L2 #0 (256KB) + L1 #0 (32KB) + Core #0
    PU #0 (phys=0)
    PU #1 (phys=4)
  L2 #1 (256KB) + L1 #1 (32KB) + Core #1
    PU #2 (phys=1)
    PU #3 (phys=5)
  L2 #2 (256KB) + L1 #2 (32KB) + Core #2
    PU #4 (phys=2)
    PU #5 (phys=6)
  L2 #3 (256KB) + L1 #3 (32KB) + Core #3
    PU #6 (phys=3)
    PU #7 (phys=7)
ewwhite
quelle
1

Sie können wie folgt verwenden:

taskset -c -p 0-3 pid

YugiReddy
quelle