Ich untersuche einen Unterschied im Verhalten bei der Verwendung von "Top -H -p
" und "mpStat -p All 2". Die App meines Unternehmens ist ein Multi-Thread-Prozess, bei dem wir jeden Thread an bestimmte Maschinenkernen binden. Einige Threads führen TCP/UDP -Lesungen aus, andere, die Nachrichtenverarbeitung durchführen usw. Wir wissen daher, welche CPU -Kerne den Threads der App entsprechen. Wir verwenden es normalerweise als "mpStat -p alle 2", um alle 2 Sekunden Statistiken zu geben. Der erste Satz von Ergebnissen wird verworfen, da dies Statistiken seit dem Start des Computers angibt. Dieses Programm sammelt die Informationen aus /proc /stat. Wir wissen also, dass unsere internen Statistiken sammeln und "mpStat" im Grunde genommen die gleichen Ergebnisse liefern, wobei ein gewisses Maß an Varianz hinsichtlich des Lese- /Proc /STAT -Falles liefert. Das folgende Beispiel ist einige Sekunden nach Beginn des "MPStat" -Prozesses: < /p>
14:25:02 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
14:25:04 PM all 1.12 0.00 0.51 0.00 0.00 0.03 0.00 0.00 0.00 98.34
14:25:04 PM 0 3.83 0.00 0.55 0.00 0.00 0.00 0.00 0.00 0.00 95.63
14:25:04 PM 1 0.52 0.00 1.55 0.00 0.00 0.00 0.00 0.00 0.00 97.94
14:25:04 PM 2 0.57 0.00 0.57 0.00 0.00 0.00 0.00 0.00 0.00 98.86
14:25:04 PM 3 0.57 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 99.43
14:25:04 PM 4 1.14 0.00 0.57 0.00 0.00 0.00 0.00 0.00 0.00 98.30
14:25:04 PM 5 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
14:25:04 PM 6 0.52 0.00 0.52 0.00 0.00 0.00 0.00 0.00 0.00 98.95
14:25:04 PM 7 0.53 0.00 1.05 0.00 0.00 0.00 0.00 0.00 0.00 98.42
14:25:04 PM 8 1.08 0.00 0.00 0.00 0.00 0.54 0.00 0.00 0.00 98.38
14:25:04 PM 9 1.07 0.00 0.53 0.00 0.00 0.00 0.00 0.00 0.00 98.40
14:25:04 PM 10 3.72 0.00 0.53 0.00 0.00 0.00 0.00 0.00 0.00 95.74
14:25:04 PM 11 3.76 0.00 0.54 0.00 0.00 0.00 0.00 0.00 0.00 95.70
14:25:04 PM 12 0.00 0.00 0.53 0.00 0.00 0.00 0.00 0.00 0.00 99.47
14:25:04 PM 13 0.53 0.00 0.53 0.00 0.00 0.00 0.00 0.00 0.00 98.93
14:25:04 PM 14 0.54 0.00 0.54 0.00 0.00 0.00 0.00 0.00 0.00 98.92
14:25:04 PM 15 0.00 0.00 0.54 0.00 0.00 0.00 0.00 0.00 0.00 99.46
< /code>
Aus Gewohnheit heraus verwenden wir normalerweise "Top -h -p ", um CPU% zu betrachten. Hier ist ein Beispiel für denselben Zeitstempel oben: < /p>
top - 14:25:04 up 156 days, 17:46, 2 users, load average: 0.37, 0.24, 0.28
Threads: 27 total, 0 running, 27 sleeping, 0 stopped, 0 zombie
%Cpu(s): 1.2 us, 0.6 sy, 0.0 ni, 98.2 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 65801192 total, 50580288 free, 10531340 used, 4689564 buff/cache
KiB Swap: 4194300 total, 4194300 free, 0 used. 52792560 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
51768 root -61 0 8500104 6.6g 8244 S 12.3 10.5 1300:13 app.udp.2
51765 root -61 0 8500104 6.6g 8244 S 12.0 10.5 1346:30 app.udp.1
51770 root -61 0 8500104 6.6g 8244 S 12.0 10.5 1281:05 app.udp.4
51769 root -61 0 8500104 6.6g 8244 S 11.6 10.5 1336:50 app.udp.3
51727 root -61 0 8500104 6.6g 8244 S 7.0 10.5 1134:38 app.IT.1
51728 root -61 0 8500104 6.6g 8244 S 7.0 10.5 1026:32 app.IT.2
51756 root -61 0 8500104 6.6g 8244 S 7.0 10.5 1156:19 app.IT.7
51737 root -61 0 8500104 6.6g 8244 S 6.6 10.5 1070:51 app.IT.3
51740 root -61 0 8500104 6.6g 8244 S 6.6 10.5 1052:50 app.IT.5
51747 root -61 0 8500104 6.6g 8244 S 6.6 10.5 1112:28 app.IT.6
51739 root -61 0 8500104 6.6g 8244 S 6.3 10.5 986:49.64 app.IT.4
51763 root -61 0 8500104 6.6g 8244 S 6.3 10.5 1075:28 app.IT.8
51721 root -61 0 8500104 6.6g 8244 S 4.3 10.5 661:24.82 app.sr.1
51725 root -61 0 8500104 6.6g 8244 S 4.3 10.5 672:52.52 app.sr.2
51660 root -61 0 8500104 6.6g 8244 S 2.3 10.5 629:07.48 app
51709 root -61 0 8500104 6.6g 8244 S 1.7 10.5 241:38.15 app.sr.0
51764 root -61 0 8500104 6.6g 8244 S 0.7 10.5 165:54.88 app.Stats
51720 root -61 0 8500104 6.6g 8244 S 0.3 10.5 15:07.43 app.sr.3
51710 root -61 0 8500104 6.6g 8244 S 0.0 10.5 8:35.44 app.sn.0
51711 root -61 0 8500104 6.6g 8244 S 0.0 10.5 5:53.78 app.sn.0
51712 root -61 0 8500104 6.6g 8244 S 0.0 10.5 19:39.35 app.sr.0
51713 root -61 0 8500104 6.6g 8244 S 0.0 10.5 0:26.52 app.D
51718 root -61 0 8500104 6.6g 8244 S 0.0 10.5 15:19.29 app.sr.1
51719 root -61 0 8500104 6.6g 8244 S 0.0 10.5 15:11.80 app.sr.2
51722 root -61 0 8500104 6.6g 8244 S 0.0 10.5 15:17.29 app.sr.4
51723 root -61 0 8500104 6.6g 8244 S 0.0 10.5 14:51.77 app.sr.5
51724 root -61 0 8500104 6.6g 8244 S 0.0 10.5 15:24.45 app.sr.6
< /code>
Die oberen 4 Threads werden den Kernen 2-5 zugeordnet (Entschuldigung, ich habe die zuletzt verwendete CPU für die "obere" Ausgabe nicht aktiviert). Ich sollte CPU-Kerne 2-5 bei 88-89% im Leerlauf im MPStat-Ausgang sehen. Ich sehe das jedoch nicht in den obigen MPStat -Ergebnissen. Warum gibt es einen Unterschied ?
Übrigens. Mein Verständnis davon ist, dass es die CPU% dauert und dann durch die Anzahl der CPUs teilt. Wenn Sie "Top" -Ergebnis "UDP.2" verwenden: 12,3% / 16 Cores = 0,77, was nicht genau den Ergebnissen "mpstat" entspricht. Ich denke nicht, dass das "Top" -Cpu% und die Dividierung durch Num CPUs das ist, was ich will. Messen Sie die separate CPU -Kernverwendung für einen Prozess?
Linux: Warum gibt es eine CPU% -Ausgangsdifferenz zwischen "Top -h -p <pid>" und "mpStat" für CPU -gebundene Multi -Thre ⇐ Linux
-
- Similar Topics
- Replies
- Views
- Last post
-
-
Warum zeigt meine Rangliste falsche Ränge für gebundene Bewertungen (Python)?
by Anonymous » » in Python - 0 Replies
- 7 Views
-
Last post by Anonymous
-