Kürzlich habe ich festgestellt, dass unser Server nicht mehr alle 80 Threads im System verwendet. Es sieht so aus, als ob 16 Kerne trotz der hohen Systemlast immer im Leerlauf sind.
Es handelt sich um einen Dell PowerEdge R900-Server mit 4 Sockeln und viermal einem 10-Core-Xeon. Also 40 Kerne, mit HT seine 80 Threads. (Intel (R) Xeon (R) CPU E7-4850 bei 2,00 GHz). Der Systemspeicher beträgt 512 GB. Unter Ubuntu 14.04.1 LTS wird ausgeführt. Ich habe den Server noch nicht neu gestartet, ich hatte gehofft, dies zu vermeiden.
uname -a Linux Assembly 3.13.0-35-generic # 62-Ubuntu SMP Fr 15. August 01:58:42 UTC 2014 x86_64 x86_64 x86_64 GNU / Linux
Ich überprüfe Folgendes:
Mit i7z gemessene Temperatur: (Es können nicht 4 Sockel angezeigt werden
CPU-Geschwindigkeit von CPU 1994.00Mhz Echte Frequenz (ohne Berücksichtigung von Turbo) 1994 MHz Socket [0] - [physische Kerne = 10, logische Kerne = 20, maximale Online-Kerne je = 10] CPU-Multiplikator 15x || Bustaktfrequenz (BCLK) 132,93 MHz TURBO AKTIVIERT auf 10 Kernen, Hyper Threading ON Maximale Frequenz ohne Berücksichtigung von Turbo 2126,93 MHz (132,93 x [16]) Der maximale TURBO-Multiplikator (falls aktiviert) mit 1/2/3/4/5/6 Kernen beträgt 0x / 0x / 0x / 0x / 0x / 0x Realstromfrequenz 1994,02 MHz (max. Unten) Kern [Kern-ID]: Tatsächliche Frequenz (Mult.) C0% Halt (C1)% C3% C6% Temp Kern 1 [1]: 1994,01 (15,00x) 100 0 0 0 75 Core 2 [5]: 1994.00 (15.00x) 100 0 0 0 77 Core 3 [9]: 1994.02 (15.00x) 100 0 0 0 76 Core 4 [13]: 1994.00 (15.00x) 100 0 0 0 77 Core 5 [17]: 1994.00 (15.00x) 100 0 0 0 77 Core 6 [21]: 1994.00 (15.00x) 97.7 0.404 0 1.86 77 Core 7 [25]: 1994.00 (15.00x) 94.5 0 1 5.27 77 Core 8 [29]: 1994.00 (15.00x) 100 0 0 0 76 Core 9 [33]: 1994.00 (15.00x) 99.8 0 1 1 75 Core 10 [37]: 1994.00 (15.00x) 100 0 0 0 73 Maximale Frequenz ohne Berücksichtigung von Turbo 2126,93 MHz (132,93 x [16]) Der maximale TURBO-Multiplikator (falls aktiviert) mit 1/2/3/4/5/6 Kernen beträgt 0x / 0x / 0x / 0x / 0x / 0x Realstromfrequenz 1994,02 MHz (max. Unten) Kern [Kern-ID]: Tatsächliche Frequenz (Mult.) C0% Halt (C1)% C3% C6% Temp Core 1 [1]: 1994.02 (15.00x) 100 0 0 0 74 Core 2 [5]: 1994.00 (15.00x) 100 0 0 0 76 Core 3 [9]: 1994.02 (15.00x) 100 0 0 0 76 Core 4 [13]: 1994.00 (15.00x) 100 0 0 0 77 Core 5 [17]: 1994.00 (15.00x) 100 0 0 0 76 Core 6 [21]: 1994.00 (15.00x) 97 0 1 2.43 77 Core 7 [25]: 1994.00 (15.00x) 92.9 0 1 6.81 77 C0 = Prozessor läuft ohne anzuhalten00x) 100 0 0 0 75 C1 = Prozessor läuft mit Unterbrechungen (Zustände> C0 sind Energiesparmodus) 1 1 75 C3 = Kerne, die mit deaktivierter PLL und deaktiviertem Kerncache ausgeführt werden 0 0 73 C6 = Alles im C3 + -Kernstatus wird im Cache der letzten Ebene gespeichert Die obigen Werte in der Tabelle sind in Prozent in den letzten 1 Sekunden angegeben [Kern-ID] bezieht sich auf die Kern-ID-Nummer in / proc / cpuinfo Die Meldung 'Garbage Values' wird gedruckt, wenn Garbage Values gelesen werden Strg + C zum Beenden
Leerlauf: Die letzten 16 Kerne sind alle zu 100% im Leerlauf:
mpstat -p ALL 1: Durchschnitt: CPU% usr% nice% sys% iowait% irq% soft% stehlen% guest% gnice% idle Durchschnitt: alle 70,69 0,00 0,70 0,00 0,00 0,00 0,00 0,00 0,00 28,61 Durchschnitt: 0 92,93 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 7,07 Durchschnitt: 1 94,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 6,00 Durchschnitt: 2 100,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 Durchschnitt: 3 83,33 0,00 2,08 0,00 0,00 0,00 0,00 0,00 0,00 14,58 Durchschnitt: 4 100,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 Durchschnitt: 5 100,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 .................................................. ........ Durchschnitt: 64 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00 Durchschnitt: 65 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00 Durchschnitt: 66 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00 Durchschnitt: 67 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00 Durchschnitt: 68 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00 Durchschnitt: 69 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00 Durchschnitt: 70 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00 Durchschnitt: 71 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00 Durchschnitt: 72 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00 Durchschnitt: 73 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00 Durchschnitt: 74 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00 Durchschnitt: 75 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00 Durchschnitt: 76 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00 Durchschnitt: 77 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00 Durchschnitt: 78 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00 Durchschnitt: 79 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00
Top Load Nummern:
top - 17:41:48 bis 35 Tage, 6:28, 15 Benutzer, Lastdurchschnitt: 77,69, 70,48, 62,73 Aufgaben: 1327 insgesamt, 44 laufen, 1281 schlafen, 2 gestoppt, 0 Zombie % Cpu (s): 63,7 us, 13,6 sy, 0,0 ni, 22,3 id, 0,2 wa, 0,0 hi, 0,2 si, 0,0 st KiB Mem: 52837942 + gesamt, 52553190 + gebraucht, 2847524 frei, 535660 Puffer KiB Swap: 78124032 gesamt, 2105608 gebraucht, 76018416 frei. 40637328 + zwischengespeicherte Mem
Manchmal ist der Leerlauf% nicht mehr 100, aber etwas weniger, wie Sie hier sehen können, aber meistens bleibt er bei 100% Leerlauf.
Durchschnitt: CPU% usr% nice% sys% iowait% irq% soft% stehlen% guest% gnice% idle Durchschnitt: alle 70,69 0,00 0,70 0,00 0,00 0,00 0,00 0,00 0,00 28,61 Durchschnitt: 64 0,13 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 99,87 Durchschnitt: 65 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00 Durchschnitt: 66 0,00 0,00 2,63 0,00 0,00 0,00 0,00 0,00 0,00 97,37 Durchschnitt: 67 0,00 0,00 0,13 0,13 0,00 0,00 0,00 0,00 0,00 99,75 Durchschnitt: 68 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00 Durchschnitt: 69 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00 Durchschnitt: 70 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00 Durchschnitt: 71 0,00 0,00 0,12 0,00 0,00 0,00 0,00 0,00 0,00 99,88 Durchschnitt: 72 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00 Durchschnitt: 73 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00 Durchschnitt: 74 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00 Durchschnitt: 75 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00 Durchschnitt: 76 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00 Durchschnitt: 77 0,00 0,00 0,13 0,00 0,00 0,00 0,00 0,00 0,00 99,87 Durchschnitt: 78 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00 Durchschnitt: 79 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00
Ich habe auch diesen Befehl ausgeführt, um sicherzustellen, dass alle online sind:
für COUNT in `seq 01 79`; echo 1> / sys / device / system / cpu / cpu $ {COUNT} / online;
Mit dem HTop-Programm kann ich einen Balken der CPU-Auslastung pro Thread visualisieren und sehe 64 gefüllte und 16 leere Balken (die letzten 16).
Wenn ich versuche, einen Prozess an einem Kern> 63 zu starten, schlägt dies ebenfalls fehl:
root @ server: ~ # Task-Set -c 63 Zeit Verwendung: Zeit [-apvV] [-f Format] [-o Datei] [--append] [--verbose] [--portability] [--format = format] [--output = file] [--version] [--quiet] [--help] Befehl [arg ...] root @ server: ~ # Task-Set -c 64 Mal Task-Set: Die Affinität von PID 0 konnte nicht festgelegt werden: Ungültiges Argument root @ server: ~ # Task-Set -c 65 Zeit Task-Set: Die Affinität von PID 0 konnte nicht festgelegt werden: Ungültiges Argument
Verwandte Themen: /ubuntu/536541/ubuntu-uses-only-2-out-of-4-processor-cores
BEARBEITEN: Es stellt sich heraus, dass die Kerne im laufenden Betrieb heruntergefahren werden, aber nicht ordnungsgemäß gestartet werden. Es scheint, dass auf diesen nicht verfügbaren Kernen Prozesse ausgeführt werden, aber es ist unmöglich, einen neuen Prozess auf diesen zu starten. Laut dem dmesg-Protokoll werden Kerne schnell nacheinander deaktiviert und aktiviert. Ich muss sagen, dass es die Absicht war, diese Kerne herunterzufahren, also haben wir diese 'Funktion' deaktiviert. DMESG-Beispielprotokoll:
[Mon Jan 12 12:42:40 2015] kvm: Deaktivieren der Virtualisierung auf CPU79 [Mon Jan 12 12:42:40 2015] smpboot: CPU 79 ist jetzt offline .... [Mon Jan 12 12:43:12 2015] smpboot: Booten von Node 0 Processor 79 APIC 0xf3 [Mon Jan 12 12:43:12 2015] kvm: Virtualisierung auf CPU79 aktivieren
Wir aktivieren / deaktivieren Kerne über:
für COUNT in `seq 64 79`; Echo 1> / sys / device / system / cpu / cpu $ {COUNT} / online; erledigt
Wir haben diese Befehle nie mit unseren 16 nicht verfügbaren Kernen verknüpft, da die obigen Befehle normalerweise ordnungsgemäß funktionieren. (Wir haben auch versucht, Powermanager zu deaktivieren, aber das hat nicht geholfen)
Antworten:
Nicht alle Programme können mehrere Threads verwenden. PHP ist eine zum Beispiel. Wenn ein PHP-Prozess viel CPU benötigt, wird nur 1 CPU maximal. Und die anderen werden untätig sein.
quelle