Linux: Befehl zum Ermitteln der Anzahl der Kerne, auf denen der Prozess in einer beliebigen Instanz ausgeführt wird

7612
Ashish singhi

Wie lautet der Befehl, um die Anzahl der Kerne herauszufinden, auf denen der Prozess in einer Instanz ausgeführt wird?

-Vielen Dank

1

1 Antwort auf die Frage

1
Deven

Der Befehl top kann mit dem folgenden Befehl Informationen zu einzelnen Threads eines Prozesses bereitstellen

top -H -p <pid> 

Um den letzten Kern zu finden, auf dem der Thread ausgeführt wurde, drücken Sie f und dann j, um die CPU-Kernspalte zu aktivieren.

Ausgabe wird wie sein

top - 11:50:35 up 332 days, 16:31, 2 users, load average: 1.39, 1.45, 1.31 Tasks: 7 total, 1 running, 6 sleeping, 0 stopped, 0 zombie Cpu(s): 2.8%us, 1.7%sy, 0.0%ni, 95.5%id, 0.0%wa, 0.0%hi, 0.1%si, 0.0%st Mem: 65980588k total, 24549232k used, 41431356k free, 30268k buffers Swap: 135170856k total, 23016712k used, 112154144k free, 11289596k cached  PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ P COMMAND 10721 tom 25 0 326m 285m 3536 R 100.0 0.4 182:13.73 22 kproxy 10722 tom 17 0 326m 285m 3536 S 0.0 0.4 0:00.00 0 kproxy 10723 tom 15 0 326m 285m 3536 S 0.0 0.4 0:00.15 7 kproxy 10724 tom 15 0 326m 285m 3536 S 0.0 0.4 0:00.00 1 kproxy 10722 tom 17 0 326m 285m 3536 S 0.0 0.4 0:00.00 0 kproxy 10723 tom 15 0 326m 285m 3536 S 0.0 0.4 0:00.15 7 kproxy 10724 tom 15 0 326m 285m 3536 S 0.0 0.4 0:00.00 1 kproxy 

Zahlen unter der P-Spalte sind der Kern, der zuletzt vom Thread verwendet wurde. Wert R unterhalb der S-Spalte bedeutet, dass der Thread läuft.

Eigentlich wollte ich die maximale Anzahl von Kernen, auf denen der Prozess ausgeführt werden kann, nicht die Kernnummer, auf der der Prozess zuletzt ausgeführt wurde. Ashish singhi vor 10 Jahren 0
Ich habe die Lösung dafür bekommen. Der folgende Befehl kann ausgeführt werden, um die Gesamtzahl der Kerne zu ermitteln, auf denen der Prozess in dieser Instanz ausgeführt wird. "** ps -eL -o pid, lwp, cpuid | grep| awk '' | sort -u | wc -l ** " Ashish singhi vor 10 Jahren 3
@Ashish Ich habe versucht "ps -eL -o pid, lwp, cpuid | grep | awk '' "und festgestellt, dass Sie die CPU-ID erhalten, auf der der Thread ausgeführt wird oder zuletzt ausgeführt wurde. Durch das Sortieren -u entfernen Sie die Duplikate, sodass Sie eine eindeutige Anzahl von Kernen für die Threads erhalten oder letzte Ausführung: Viele dieser Threads befinden sich möglicherweise im Ruhezustand, wenn Sie die Ausgabe erhalten. Ihre Ergebnisse sind abhängig vom Zeitplaner. Auf einem anderen Server oder zu einer anderen Uhrzeit auf demselben Server erhalten Sie möglicherweise andere Ergebnisse Deven vor 10 Jahren 0
Sie meinen, dieser Befehl ist nicht voll vertrauenswürdig, um die Anzahl der Kerne herauszufinden, auf denen der Prozess zu einem bestimmten Zeitpunkt ausgeführt wird? Ashish singhi vor 10 Jahren 0
Zu welchem ​​Zweck benötigen Sie die Anzahl der verwendeten Kerne? Deven vor 10 Jahren 0
Berechnen der von einem Prozess verwendeten CPU (in Prozent) in einer Instanz. Ashish singhi vor 10 Jahren 0
Die CPU-Auslastung (z. B. von oben) ist ein stabiler Indikator, den Sie meiner Meinung nach verwenden sollten. Die Verteilung von Threads auf Kernen ist eine Entscheidung des Prozess-Schedulers in OS. Es gibt viele Faktoren, die die Verteilung für z. B. die Anzahl der Kerne pro Prozessor, die NUMA-Architektur usw. ändern können. Auf einer 8-Kern-Maschine mit 2 Prozessoren oder der 12-Kern-Maschine mit 2 Prozessoren können Sie eine sehr unterschiedliche Verteilung von Threads auf Kernen für denselben Prozessor erhalten Prozess und Szenario.Punkt ist, dass es viele Faktoren gibt, und dieser Indikator für die Anzahl der Kerne, auf denen die Threads ausgeführt werden und der zuletzt ausgeführt wurde, ist kein stabiler Indikator. Deven vor 10 Jahren 0