Von 80 Kernen werden 16 Kerne nicht verwendet

11

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)

HenrivdGeest
quelle
1
Warum haben Sie oder Ihr Unternehmen nicht auf Ubuntu-Server anstatt auf Ubuntu für normale PCs gesetzt?
XperianX
1
Es ist nicht unmöglich, dass 16 Ihrer Kerne tatsächlich maximal ausgelastet sind, sodass 16 virtuelle Kerne keinen nutzbaren Spielraum haben.
anonymous2
1
Befinden sich alle 8 Kerne (16 virtuelle) auf einer physischen CPU oder sind sie auf alle 4 Sockel verteilt? Wenn sie sich auf einer physischen CPU befinden, ist es möglich, dass diese Kerne ausgefallen sind?
Jibberish51
2
Ich frage mich, ob es irgendwo im System Code gibt, der die CPU-Affinitätsmaske mit nur 64 Bit darstellt und verhindert, dass Prozesse die letzten 16 Kerne nutzen können.
Kasperd
Angesichts von 80-16 = 64 scheint es mir, dass die maximale Anzahl der zu verwendenden Kerne irgendwo künstlich begrenzt ist. Möglicherweise ist die von Ihnen ausgeführte Software auf maximal 64 Kerne eingestellt, oder es können möglicherweise nicht mehr als 64 Threads generiert werden.
Clonkex

Antworten:

1

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.

Carl
quelle