Top-Befehl auf Multi-Core-Prozessor

46

Ich benutze Freescale IMX6 Quad-Prozessor. Ich möchte wissen, ob der topBefehl die CPU-Auslastung aller 4 Kerne oder eines einzelnen Kerns auflistet. Ich sehe, dass die CPU-Auslastung einer Anwendung mit 4 Kernen und mit einem einzelnen Kern identisch ist. Ich habe vermutet, dass die CPU-Auslastung der Anwendung auf einem einzelnen Kern zunimmt und auf vier Kernen abnimmt, aber sie hat sich nicht geändert.

user3818847
quelle
5
Versuche 1 zu drücken, während top läuft
Dani_l
Könnten Sie bitte näher darauf eingehen. Wie in was passiert, wenn ich 1 drücke. Weil ich dieses inkonsistente Ergebnis seit 2 Tagen erhalte.
User3818847
1
Welche Anwendung ist das? Warum sollte Ihre Anwendung, falls verfügbar, mehrere Kerne verwenden? Es gibt viele Anwendungen, die auf einer einzelnen CPU / einem Kern arbeiten und für die sich niemand die Zeit genommen hat, sie zu parallisieren.
Anthon
2
Nein. Wenn mehrere Kerne vorhanden sind, häufen sie sich zu über 100% an. 4 Kerne können mit Hyperthreading auf jedem Kern bis zu 800% erreichen
Dani_l
1
Ich benutze htopdafür gerne .
Richard

Antworten:

67

Ich bin nicht ganz sicher, was Sie hier fragen. Ja, topzeigt die CPU-Auslastung standardmäßig als Prozentsatz einer einzelnen CPU an. Aus diesem Grund können Prozentsätze> 100 angegeben werden. Auf einem System mit 4 Kernen können Sie eine CPU-Auslastung von bis zu 400% feststellen.

Sie können dieses Verhalten ändern, indem Sie während der Ausführung auf I(das ist Shift+ iund schaltet den "Irix-Modus" um) drücken top. Dadurch wird der Prozentsatz der verwendeten verfügbaren CPU-Leistung angezeigt. Wie erklärt in man top:

    1. %CPU  --  CPU Usage
       The task's share of the elapsed CPU time since the last screen
       update, expressed as a percentage of total  CPU  time.   In  a
       true  SMP environment, if 'Irix mode' is Off, top will operate
       in 'Solaris mode' where a task's cpu usage will be divided  by
       the  total  number  of  CPUs.  You toggle 'Irix/Solaris' modes
       with the 'I' interactive command.

Alternativ können Sie drücken 1, um eine Aufschlüsselung der CPU-Auslastung pro CPU anzuzeigen:

top - 13:12:58 up 21:11, 17 users,  load average: 0.69, 0.50, 0.43
Tasks: 248 total,   3 running, 244 sleeping,   0 stopped,   1 zombie
%Cpu0  : 33.3 us, 33.3 sy,  0.0 ni, 33.3 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu1  : 16.7 us,  0.0 sy,  0.0 ni, 83.3 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu2  : 60.0 us,  0.0 sy,  0.0 ni, 40.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu3  :  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem:   8186416 total,  6267232 used,  1919184 free,   298832 buffers
KiB Swap:  8191996 total,        0 used,  8191996 free,  2833308 cached
terdon
quelle
1
Ich glaube, mit Hyperthread können Sie bis zu 800% sehen, da / proc / cpuinfo jeden Thread als CPU
anzeigt
@Dani_l ja, ob der "core" physisch oder virtuell ist ist irrelevant, er wird von als "CPU" behandelt top. Die Ausgabe, die ich zeige, stammt von meinem Laptop, der eine einzelne physische CPU mit zwei Kernen hat, von denen jeder einen zweiten logischen Kern hat. Das Ergebnis ist, dass top4 Kerne sieht.
Terdon
Entschuldigung für die Fehlerkorrektur, in meinem Dayjob müssen wir bei der Ressourcenreservierung zwischen Sockets, Cores und Threads unterscheiden. Ich denke, die Gewohnheit ist geblieben.
Dani_l
9

Klicken Sie einfach auf "1", während top ausgeführt wird

Abdullah
quelle
5
Diese Antwort steht seit Jahren in den Kommentaren ... bitte füge etwas Neues hinzu.
Yeti
0

Wenn Sie topsofort öffnen möchten, um separate CPUs anzuzeigen, ohne drücken zu müssen 1, können Sie die -1Option verwenden.

z.B:

top -1

...
%Cpu0  :  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu1  :  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu2  : 44.7 us, 55.3 sy,  0.0 ni,  0.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu3  : 46.7 us, 53.3 sy,  0.0 ni,  0.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
...     
Leigh McCulloch
quelle