16 core non vengono utilizzati su 80 core


11

Recentemente ho scoperto che il nostro server non utilizza più tutti gli 80 thread nel sistema. Sembra che 16 core siano sempre inattivi, nonostante l'elevato carico del sistema.

È un server Dell powerEdge R900, con 4 socket, 4 volte un Xeon a 10 core. Quindi 40 core, con HT i suoi 80 thread. (CPU Intel (R) Xeon (R) E7-4850 a 2,00 GHz). La memoria di sistema è di 512 GB con Ubuntu 14.04.1 LTS. Non ho ancora riavviato il server, speravo di evitarlo.

uname -a
Linux assembly 3.13.0-35-generic # 62-Ubuntu SMP ven 15 ago 01:58:42 UTC 2014 x86_64 x86_64 x86_64 GNU / Linux

Controllo quanto segue:

Temperatura misurata con i7z: (non può visualizzare 4 prese

Velocità della cpu da cpuinfo 1994.00Mhz
Frequenza reale (senza turbo contabile) 1994 MHz

Socket [0] - [core fisici = 10, core logici = 20, numero massimo di core online mai = 10]
  Moltiplicatore di CPU 15x || Frequenza di clock del bus (BCLK) 132,93 MHz
  TURBO ABILITATO su 10 core, Hyper Threading ON
  Frequenza massima senza considerare Turbo 2126,93 MHz (132,93 x [16])
  Il moltiplicatore TURBO massimo (se abilitato) con 1/2/3/4/5/6 core è 0x / 0x / 0x / 0x / 0x / 0x
  Frequenza corrente reale 1994.02 MHz (massimo di sotto)
        Core [core-id]: Freq effettivo (Mult.) C0% Halt (C1)% C3% C6% Temp
        Core 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
  Frequenza massima senza considerare Turbo 2126,93 MHz (132,93 x [16])
  Il moltiplicatore TURBO massimo (se abilitato) con 1/2/3/4/5/6 core è 0x / 0x / 0x / 0x / 0x / 0x
  Frequenza corrente reale 1994.02 MHz (massimo di sotto)
        Core [core-id]: Freq effettivo (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 = Processore in esecuzione senza arresto 100x) 100 0 0 0 75
C1 = Processore in esecuzione con arresti (Stati> C0 sono risparmio energetico) 1 1 75
C3 = Core in esecuzione con PLL disattivato e cache core disattivata 0 0 73
C6 = Tutto in C3 + stato principale salvato nella cache di ultimo livello
  I valori sopra riportati nella tabella sono in percentuale negli ultimi 1 secondo
[core-id] si riferisce al numero id-core in / proc / cpuinfo
Messaggio "Garbage Values" stampato quando vengono letti i valori di Garbage
  Ctrl + C per uscire

Inattivo: gli ultimi 16 core sono tutti inattivi al 100%:

mpstat -p ALL 1:
Media: CPU% usr% nice% sys% iowait% irq% soft% steal% guest% gnice% idle
Media: tutti 70,69 0,00 0,70 0,00 0,00 0,00 0,00 0,00 0,00 0,00 28,61
Media: 0 92,93 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 7,07
Media: 1 94,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 6,00
Media: 2 100,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
Media: 3 83,33 0,00 2,08 0,00 0,00 0,00 0,00 0,00 0,00 0,00 14,58
Media: 4 100,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
Media: 5 100,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
.................................................. ........
Media: 64 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00
Media: 65 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00
Media: 66 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00
Media: 67 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00
Media: 68 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00
Media: 69 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00
Media: 70 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00
Media: 71 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00
Media: 72 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00
Media: 73 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00
Media: 74 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00
Media: 75 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00
Media: 76 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00
Media: 77 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00
Media: 78 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00
Media: 79 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00

Principali numeri di carico:

in alto - 17:41:48 per 35 giorni, 6:28, 15 utenti, caricamento media: 77.69, 70.48, 62.73
Compiti: 1327 totali, 44 in esecuzione, 1281 dormienti, 2 fermati, 0 zombi
% Cpu: 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 + totale, 52553190 + usato, 2847524 libero, 535660 buffer
KiB Swap: 78124032 totali, 2105608 usati, 76018416 gratuiti. 40637328 + Mem. Memorizzato nella cache

A volte il% inattivo non è più 100, ma un po 'meno, come puoi vedere qui, ma principalmente rimane al 100% inattivo.

Media: CPU% usr% nice% sys% iowait% irq% soft% steal% guest% gnice% idle
Media: tutti 70,69 0,00 0,70 0,00 0,00 0,00 0,00 0,00 0,00 0,00 28,61
Media: 64 0,13 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 99,87
Media: 65 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00
Media: 66 0,00 0,00 2,63 0,00 0,00 0,00 0,00 0,00 0,00 0,00 97,37
Media: 67 0,00 0,00 0,13 0,13 0,00 0,00 0,00 0,00 0,00 0,00 99,75
Media: 68 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00
Media: 69 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00
Media: 70 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00
Media: 71 0,00 0,00 0,12 0,00 0,00 0,00 0,00 0,00 0,00 0,00 99,88
Media: 72 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00
Media: 73 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00
Media: 74 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00
Media: 75 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00
Media: 76 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00
Media: 77 0,00 0,00 0,13 0,00 0,00 0,00 0,00 0,00 0,00 0,00 99,87
Media: 78 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00
Media: 79 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00

Ho anche eseguito questo comando per assicurarmi che siano tutti online:

per COUNT in `seq 01 79`; fare eco 1> / sys / devices / system / cpu / cpu $ {COUNT} / online; 

Con il programma HTop posso visualizzare una barra di utilizzo della cpu per thread, e vedere 64 barre riempite e 16 vuote (le ultime 16).

Quando provo ad avviare un processo su un core> 63 non riesce a farlo:

root @ server: ~ # Taskset -c 63 volte
Utilizzo: time [-apvV] [-f format] [-o file] [--append] [--verbose]
       [--portability] [--format = format] [--output = file] [--version]
       [--quiet] [--help] comando [arg ...]
root @ server: ~ # tasket -c 64 volte
tasket: impossibile impostare l'affinità di pid 0: argomento non valido
root @ server: ~ # tasket -c 65 volte
tasket: impossibile impostare l'affinità di pid 0: argomento non valido

Thread correlato: /ubuntu/536541/ubuntu-uses-only-2-out-of-4-processor-cores

EDIT: Si scopre che i core sono spenti al volo, ma non si avviano correttamente. Sembra che ci siano processi in esecuzione su questi core non disponibili, ma è impossibile avviare un nuovo processo su di essi. Secondo il dmesg log, i core sono disabilitati e abilitati rapidamente uno dopo l'altro. Devo dire che era intenzione di spegnere questi core, quindi abbiamo disabilitato questa "caratteristica". Registro di esempio DMESG:

[Lun 12 gennaio 12:42:40 2015] kvm: disabilitazione della virtualizzazione su CPU79
[Lun 12 gennaio 12:42:40 2015] smpboot: CPU 79 non è in linea
....
[Lun 12 gennaio 12:43:12 2015] smpboot: Avvio Nodo 0 Processore 79 APIC 0xf3
[Lun 12 gennaio 12:43:12 2015] kvm: abilitazione della virtualizzazione su CPU79

Abilitiamo / disabilitiamo i core tramite:

per COUNT in `seq 64 79`; fare eco 1> / sys / devices / system / cpu / cpu $ {COUNT} / online; fatto

Non abbiamo mai collegato questi comandi con i nostri 16 core non disponibili, poiché normalmente i comandi sopra funzionano correttamente. (abbiamo anche provato a disabilitare powermanager, ma questo non ha aiutato)


1
Perché tu o la tua azienda non avete utilizzato il server Ubuntu anziché Ubuntu per i normali PC?
XperianX,

1
Non è impossibile che 16 dei tuoi core siano effettivamente utilizzati per la capacità MAX, lasciando 16 core virtuali senza margine utilizzabile.
anonymous2,

1
Tutti gli 8 core (16 virtuali) sono su una CPU fisica o sono distribuiti su tutti e 4 i socket? Se si trovano su una CPU fisica, è possibile che quei core abbiano fallito?
Jibberish51,

2
Mi chiedo se da qualche parte nel sistema esiste un codice che rappresenta la maschera di affinità della CPU con solo 64 bit che gli impedisce di consentire ai processi di utilizzare gli ultimi 16 core.
Kasperd,

Dato che 80-16 = 64, mi sembra che ci sia un limite artificiale da qualche parte sul numero massimo di core da usare. Probabilmente qualunque software in esecuzione sia impostato su un massimo di 64 core, o forse non può generare più di 64 thread.
Clonkex,

Risposte:


1

Non tutti i programmi possono utilizzare più thread. php è uno per esempio. Se un processo php ha bisogno di molta CPU, solo 1 CPU raggiungerà il massimo. E gli altri saranno inattivi.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.