16 cœurs ne sont pas utilisés sur 80 cœurs

11

Récemment, j'ai découvert que notre serveur n'utilisait plus les 80 threads du système. Il semble que 16 cœurs soient toujours inactifs, malgré la charge élevée du système.

C'est un serveur Dell powerEdge R900, avec 4 sockets, 4 fois un Xeon à 10 cœurs. Soit 40 cœurs, avec HT ses 80 fils. (Processeur Intel (R) Xeon (R) E7- 4850 à 2,00 GHz). La mémoire système est de 512 Go avec Ubuntu 14.04.1 LTS. Je n'ai pas encore redémarré le serveur, j'espérais éviter cela.

uname -a
Assemblage Linux 3.13.0-35-générique # 62-Ubuntu SMP ven 15 août 01:58:42 UTC 2014 x86_64 x86_64 x86_64 GNU / Linux

Je vérifie les points suivants:

Température mesurée avec i7z: (il ne peut pas afficher 4 prises

Vitesse du processeur de cpuinfo 1994.00Mhz
Fréquence vraie (sans comptabilité Turbo) 1994 MHz

Socket [0] - [cœurs physiques = 10, cœurs logiques = 20, cœurs en ligne max jamais = 10]
  Multiplicateur CPU 15x || Fréquence d'horloge du bus (BCLK) 132,93 MHz
  TURBO ACTIVÉ sur 10 cœurs, Hyper Threading ON
  Fréquence maximale sans considérer Turbo 2126,93 MHz (132,93 x [16])
  Le multiplicateur TURBO max (si activé) avec les cœurs 1/2/3/4/5/6 est 0x / 0x / 0x / 0x / 0x / 0x
  Fréquence actuelle réelle 1994,02 MHz (max. Ci-dessous)
        Core [core-id]: Fréq. Réelle (Mult.) C0% Halt (C1)% C3% C6% Temp
        Noyau 1 [1]: 1994.01 (15.00x) 100 0 0 0 75
        Noyau 2 [5]: 1994,00 (15,00x) 100 0 0 0 77
        Noyau 3 [9]: 1994.02 (15.00x) 100 0 0 0 76
        Noyau 4 [13]: 1994,00 (15,00x) 100 0 0 0 77
        Noyau 5 [17]: 1994,00 (15,00x) 100 0 0 0 77
        Noyau 6 [21]: 1994,00 (15,00x) 97,7 0,404 0 1,86 77
        Noyau 7 [25]: 1994,00 (15,00x) 94,5 0 1 5,27 77
        Noyau 8 [29]: 1994,00 (15,00x) 100 0 0 0 76
        Noyau 9 [33]: 1994,00 (15,00x) 99,8 0 1 1 75
        Noyau 10 [37]: 1994,00 (15,00x) 100 0 0 0 73
  Fréquence maximale sans considérer Turbo 2126,93 MHz (132,93 x [16])
  Le multiplicateur TURBO max (si activé) avec les cœurs 1/2/3/4/5/6 est 0x / 0x / 0x / 0x / 0x / 0x
  Fréquence actuelle réelle 1994,02 MHz (max. Ci-dessous)
        Core [core-id]: Fréq. Réelle (Mult.) C0% Halt (C1)% C3% C6% Temp
        Noyau 1 [1]: 1994.02 (15.00x) 100 0 0 0 74
        Noyau 2 [5]: 1994,00 (15,00x) 100 0 0 0 76
        Noyau 3 [9]: 1994.02 (15.00x) 100 0 0 0 76
        Noyau 4 [13]: 1994,00 (15,00x) 100 0 0 0 77
        Noyau 5 [17]: 1994,00 (15,00x) 100 0 0 0 76
        Noyau 6 [21]: 1994,00 (15,00x) 97 0 1 2,43 77
        Noyau 7 [25]: 1994,00 (15,00x) 92,9 0 1 6,81 77
C0 = Processeur fonctionnant sans arrêt00x) 100 0 0 0 75
C1 = Processeur fonctionnant avec des arrêts (les états> C0 sont économiseurs d'énergie) 1 1 75
C3 = cœurs fonctionnant avec PLL désactivé et cache de cœur désactivé 0 0 73
C6 = Tout dans l'état de base C3 + enregistré dans le cache de dernier niveau
  Les valeurs ci-dessus dans le tableau sont en pourcentage au cours des 1 dernières secondes
[core-id] fait référence au numéro de core-id dans / proc / cpuinfo
Message «Valeurs de déchets» imprimé lors de la lecture des valeurs de déchets
  Ctrl + C pour quitter

Inactif: les 16 derniers cœurs sont tous 100% inactifs:

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

Numéros de chargement supérieurs:

top - 17:41:48 jusqu'à 35 jours, 6:28, 15 utilisateurs, charge moyenne: 77,69, 70,48, 62,73
Tâches: 1327 au total, 44 en cours d'exécution, 1281 en sommeil, 2 arrêtés, 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 + total, 52553190 + utilisé, 2847524 gratuit, 535660 tampons
Échange KiB: 78124032 au total, 2105608 utilisé, 76018416 gratuit. 40637328 + Mem en cache

Parfois, le% inactif n'est plus de 100, mais un peu moins, comme vous pouvez le voir ici, mais surtout il reste à 100% inactif.

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

J'ai également exécuté cette commande pour m'assurer qu'ils sont tous en ligne:

pour COUNT dans `seq 01 79`; faites echo 1> / sys / devices / system / cpu / cpu $ {COUNT} / en ligne; 

Avec le programme HTop, je peux visualiser une barre d'utilisation du processeur par thread, et voir 64 barres remplies et 16 vides (les 16 dernières).

Lorsque j'essaie de démarrer un processus sur un noyau> 63, cela échoue également:

root @ server: ~ # tâcheset -c 63 fois
Utilisation: heure [-apvV] [-f format] [-o fichier] [--append] [--verbose]
       [--portabilité] [--format = format] [--output = fichier] [--version]
       [--quiet] [--help] commande [arg ...]
root @ server: ~ # tâcheset -c 64 fois
ensemble de tâches: échec de la définition de l'affinité du pid 0: argument non valide
root @ server: ~ # tâcheset -c 65 fois
ensemble de tâches: échec de la définition de l'affinité du pid 0: argument non valide

Fil associé: /ubuntu/536541/ubuntu-uses-only-2-out-of-4-processor-cores

EDIT: Il s'avère que les cœurs sont arrêtés à la volée, mais ne démarrent pas correctement. Il semble qu'il y ait des processus en cours d'exécution sur ces cœurs indisponibles, mais il est impossible de démarrer un nouveau processus sur eux. Selon le journal dmesg, les cœurs sont désactivés et activés rapidement les uns après les autres. Je dois dire que c'était l'intention d'arrêter ces cœurs, nous avons donc désactivé cette «fonctionnalité». Exemple de journal DMESG:

[Lun 12 janvier 12:42:40 2015] kvm: désactivation de la virtualisation sur CPU79
[Lun 12 janvier 12:42:40 2015] smpboot: le CPU 79 est maintenant hors ligne
....
[Lun. 12 janv. 12:43:12 2015] smpboot: Processeur de démarrage du nœud 0 79 APIC 0xf3
[Lun 12 jan 12:43:12 2015] kvm: activation de la virtualisation sur CPU79

Nous activons / désactivons les cœurs via:

pour COUNT dans `seq 64 79`; faire echo 1> / sys / devices / system / cpu / cpu $ {COUNT} / online; done

Nous n'avons jamais lié ces commandes à nos 16 cœurs indisponibles, car normalement les commandes ci-dessus fonctionnent correctement. (nous avons également essayé de désactiver powermanager, mais cela n'a pas aidé)

HenrivdGeest
la source
1
Pourquoi vous ou votre entreprise n'êtes pas allé avec le serveur Ubuntu plutôt qu'avec Ubuntu pour les PC normaux?
XperianX du
1
Il n'est pas impossible que 16 de vos cœurs soient réellement utilisés à la capacité MAX, laissant 16 cœurs virtuels sans marge utilisable.
anonymous2
1
Les 8 cœurs (16 virtuels) sont-ils tous sur un processeur physique ou sont-ils répartis sur les 4 sockets? S'ils sont situés sur un processeur physique, est-il possible que ces cœurs soient en panne?
Jibberish51
2
Je me demande si quelque part dans le système il y a du code qui représente le masque d'affinité CPU avec seulement 64 bits l'empêchant d'autoriser les processus à utiliser les 16 derniers cœurs.
kasperd
Étant donné que 80-16 = 64, il me semble qu'il y a une limite artificielle quelque part sur le nombre maximum de cœurs à utiliser. Quel que soit le logiciel que vous exécutez, il peut avoir un maximum de 64 cœurs, ou il ne peut pas générer plus de 64 threads.
Clonkex

Réponses:

1

Tous les programmes ne peuvent pas utiliser plusieurs threads. php en est un par exemple. Si un processus php a besoin de beaucoup de CPU, seulement 1 CPU sera au maximum. Et les autres seront inactifs.

Carl
la source