Question Bande passante mémoire du serveur principal AMD 24


J'ai besoin d'aide pour déterminer si la bande passante mémoire que je vois sous Linux sur mon serveur est normale ou non. Voici la spécification du serveur:

HP ProLiant DL165 G7
2x AMD Opteron 6164 HE 12-Core
40 GB RAM (10 x 4GB DDR1333)
Debian 6.0

En utilisant mbw sur ce serveur, je reçois les numéros suivants:

foo1:~# mbw -n 3 1024
Long uses 8 bytes. Allocating 2*134217728 elements = 2147483648 bytes of memory.
Using 262144 bytes as blocks for memcpy block copy test.
Getting down to business... Doing 3 runs per test.
0   Method: MEMCPY  Elapsed: 0.58047    MiB: 1024.00000 Copy: 1764.082 MiB/s
1   Method: MEMCPY  Elapsed: 0.58012    MiB: 1024.00000 Copy: 1765.152 MiB/s
2   Method: MEMCPY  Elapsed: 0.58010    MiB: 1024.00000 Copy: 1765.201 MiB/s
AVG Method: MEMCPY  Elapsed: 0.58023    MiB: 1024.00000 Copy: 1764.811 MiB/s
0   Method: DUMB    Elapsed: 0.36174    MiB: 1024.00000 Copy: 2830.778 MiB/s
1   Method: DUMB    Elapsed: 0.35869    MiB: 1024.00000 Copy: 2854.817 MiB/s
2   Method: DUMB    Elapsed: 0.35848    MiB: 1024.00000 Copy: 2856.481 MiB/s
AVG Method: DUMB    Elapsed: 0.35964    MiB: 1024.00000 Copy: 2847.310 MiB/s
0   Method: MCBLOCK Elapsed: 0.23546    MiB: 1024.00000 Copy: 4348.860 MiB/s
1   Method: MCBLOCK Elapsed: 0.23544    MiB: 1024.00000 Copy: 4349.230 MiB/s
2   Method: MCBLOCK Elapsed: 0.23544    MiB: 1024.00000 Copy: 4349.359 MiB/s
AVG Method: MCBLOCK Elapsed: 0.23545    MiB: 1024.00000 Copy: 4349.149 MiB/s

Sur l'un de mes autres serveurs (basé sur Intel Xeon E3-1270):

foo2:~# mbw -n 3 1024
Long uses 8 bytes. Allocating 2*134217728 elements = 2147483648 bytes of memory.
Using 262144 bytes as blocks for memcpy block copy test.
Getting down to business... Doing 3 runs per test.
0   Method: MEMCPY  Elapsed: 0.18960    MiB: 1024.00000 Copy: 5400.901 MiB/s
1   Method: MEMCPY  Elapsed: 0.18922    MiB: 1024.00000 Copy: 5411.690 MiB/s
2   Method: MEMCPY  Elapsed: 0.18944    MiB: 1024.00000 Copy: 5405.491 MiB/s
AVG Method: MEMCPY  Elapsed: 0.18942    MiB: 1024.00000 Copy: 5406.024 MiB/s
0   Method: DUMB    Elapsed: 0.14838    MiB: 1024.00000 Copy: 6901.200 MiB/s
1   Method: DUMB    Elapsed: 0.14818    MiB: 1024.00000 Copy: 6910.561 MiB/s
2   Method: DUMB    Elapsed: 0.14820    MiB: 1024.00000 Copy: 6909.628 MiB/s
AVG Method: DUMB    Elapsed: 0.14825    MiB: 1024.00000 Copy: 6907.127 MiB/s
0   Method: MCBLOCK Elapsed: 0.04362    MiB: 1024.00000 Copy: 23477.623 MiB/s
1   Method: MCBLOCK Elapsed: 0.04262    MiB: 1024.00000 Copy: 24025.151 MiB/s
2   Method: MCBLOCK Elapsed: 0.04258    MiB: 1024.00000 Copy: 24048.849 MiB/s
AVG Method: MCBLOCK Elapsed: 0.04294    MiB: 1024.00000 Copy: 23847.599 MiB/s

Pour référence, voici ce que je reçois sur mon ordinateur portable basé sur Intel:

laptop:~$ mbw -n 3 1024
Long uses 8 bytes. Allocating 2*134217728 elements = 2147483648 bytes of memory.
Using 262144 bytes as blocks for memcpy block copy test.
Getting down to business... Doing 3 runs per test.
0   Method: MEMCPY  Elapsed: 0.40566    MiB: 1024.00000 Copy: 2524.269 MiB/s
1   Method: MEMCPY  Elapsed: 0.38458    MiB: 1024.00000 Copy: 2662.638 MiB/s
2   Method: MEMCPY  Elapsed: 0.38876    MiB: 1024.00000 Copy: 2634.043 MiB/s
AVG Method: MEMCPY  Elapsed: 0.39300    MiB: 1024.00000 Copy: 2605.600 MiB/s
0   Method: DUMB    Elapsed: 0.30707    MiB: 1024.00000 Copy: 3334.745 MiB/s
1   Method: DUMB    Elapsed: 0.30425    MiB: 1024.00000 Copy: 3365.653 MiB/s
2   Method: DUMB    Elapsed: 0.30342    MiB: 1024.00000 Copy: 3374.849 MiB/s
AVG Method: DUMB    Elapsed: 0.30491    MiB: 1024.00000 Copy: 3358.328 MiB/s
0   Method: MCBLOCK Elapsed: 0.07875    MiB: 1024.00000 Copy: 13003.670 MiB/s
1   Method: MCBLOCK Elapsed: 0.08374    MiB: 1024.00000 Copy: 12228.034 MiB/s
2   Method: MCBLOCK Elapsed: 0.07635    MiB: 1024.00000 Copy: 13411.216 MiB/s
AVG Method: MCBLOCK Elapsed: 0.07961    MiB: 1024.00000 Copy: 12862.006 MiB/s

Donc selon mbw  mon ordinateur portable est 3 fois plus rapide que le serveur !!! S'il vous plaît aidez-moi à expliquer cela. J'ai également essayé de monter un disque RAM et d'utiliser dd pour le comparer et j'obtiens des différences similaires, donc je ne pense pas mbw est à blâmer.

J'ai vérifié les paramètres du BIOS et la mémoire semble fonctionner à pleine vitesse. Selon la société d'hébergement, les modules sont tous acceptables.

Cela aurait-il quelque chose à voir avec NUMA? Il semble que l'entrelacement des nœuds soit désactivé sur ce serveur. L'activer (et donc désactiver NUMA) fera-t-il une différence?

foo1:~# numactl --hardware
available: 4 nodes (0-3)
node 0 cpus: 0 1 2 3 4 5
node 0 size: 8190 MB
node 0 free: 7898 MB
node 1 cpus: 6 7 8 9 10 11
node 1 size: 12288 MB
node 1 free: 12073 MB
node 2 cpus: 18 19 20 21 22 23
node 2 size: 12288 MB
node 2 free: 12034 MB
node 3 cpus: 12 13 14 15 16 17
node 3 size: 8192 MB
node 3 free: 8032 MB
node distances:
node   0   1   2   3 
  0:  10  20  20  20 
  1:  20  10  20  20 
  2:  20  20  10  20 
  3:  20  20  20  10 

METTRE À JOUR:

Avez désactivé NUMA (numa = désactivé au démarrage de Linux) et désactivé ECC dans le BIOS. Pas de changement, toujours les mêmes numéros que ci-dessus.

MISE À JOUR 2:

Voici la disposition de la mémoire en fonction de dmidecode:

PROC 1 DIMM 1
PROC 1 DIMM 4
PROC 1 DIMM 7
PROC 1 DIMM 10
PROC 1 DIMM 12

PROC 2 DIMM 1
PROC 2 DIMM 4
PROC 2 DIMM 7
PROC 2 DIMM 10
PROC 2 DIMM 12

Ce sont tous Modules Samsung 4 Go (numéro de pièce M393B5270CH0-CH9)

J'ai jeté un oeil au la HP docs sur la façon de remplir la mémoire sur ce serveur et si je comprends bien, les modules qui se trouvent actuellement dans DIMM 12 auraient dû être placés dans le logement DIMM 3. Une telle mauvaise configuration peut-elle expliquer les résultats obtenus?

MISE À JOUR 3:

J'ai maintenant retiré 2 modules pour obtenir 4x4 Go de chaque côté (4-4) placés en 1-4-7-10. Malheureusement, je ne vois aucune différence dans les points de repère. Le serveur ne devrait-il pas pouvoir utiliser les quatre canaux maintenant? J'ai aussi essayé avec le stream référence avec plusieurs threads et les résultats sont très décevants. La seule chose à laquelle je puisse penser est de demander à la société d’hébergement de remplacer l’ensemble du serveur ...

MISE À JOUR 4:

J'ai dû faire quelque chose de mal quand j'ai testé la dernière configuration (32 Go) avec stream hier parce qu'aujourd'hui je vois d'excellents résultats:

foo1:~# ./stream
-------------------------------------------------------------
STREAM version $Revision: 5.9 $
-------------------------------------------------------------
This system uses 8 bytes per DOUBLE PRECISION word.
-------------------------------------------------------------
Array size = 2000000, Offset = 0
Total memory required = 45.8 MB.
Each test is run 10 times, but only
the *best* time for each is used.
-------------------------------------------------------------
Number of Threads requested = 24
-------------------------------------------------------------
Printing one line per active thread....
Printing one line per active thread....
Printing one line per active thread....
Printing one line per active thread....
Printing one line per active thread....
Printing one line per active thread....
Printing one line per active thread....
Printing one line per active thread....
Printing one line per active thread....
Printing one line per active thread....
Printing one line per active thread....
Printing one line per active thread....
Printing one line per active thread....
Printing one line per active thread....
Printing one line per active thread....
Printing one line per active thread....
Printing one line per active thread....
Printing one line per active thread....
Printing one line per active thread....
Printing one line per active thread....
Printing one line per active thread....
Printing one line per active thread....
Printing one line per active thread....
Printing one line per active thread....
-------------------------------------------------------------
Your clock granularity/precision appears to be 1 microseconds.
Each test below will take on the order of 703 microseconds.
   (= 703 clock ticks)
Increase the size of the arrays if this shows that
you are not getting at least 20 clock ticks per test.
-------------------------------------------------------------
WARNING -- The above is only a rough guideline.
For best results, please be sure you know the
precision of your system timer.
-------------------------------------------------------------
Function      Rate (MB/s)   Avg time     Min time     Max time
Copy:       36873.0022       0.0009       0.0009       0.0010
Scale:      34699.5160       0.0009       0.0009       0.0010
Add:        30868.8427       0.0016       0.0016       0.0017
Triad:      25558.7904       0.0019       0.0019       0.0020
-------------------------------------------------------------
Solution Validates
-------------------------------------------------------------

(J'ai abandonné mbw car il ne fonctionne qu'en mode mono-thread. Il donne toujours les mêmes résultats merdiques sur ce serveur).

Le problème devait donc provenir des deux derniers modules de 4 Go qui ont forcé le serveur à fonctionner en mode monocanal, comme @chx l'a souligné ci-dessous. Maintenant, la seule question qui reste est de savoir s'il est possible d'utiliser 40 Go tout en bénéficiant de toute la bande passante. Puis-je utiliser 2 x 8 Go + 6 x 4 Go? Est-ce que le canal dans lequel je place les plus gros modules est important?


7
2017-09-25 15:27


origine


Eh bien, votre ordinateur portable n’exécute pas ECC, donc cela expliquerait cela. ECC fonctionne-t-il sur le serveur Intel? - pauska
Les modules de RAM du serveur AMD sont des modules ECC. Je ne sais pas pour le serveur Intel. dmidecode ne donne aucune information sur les modules qu'il utilise. Mais l'ECC pourrait-il vraiment expliquer l'énorme différence? Googling suggère que l'ECC RAM donne quelques% de pénalité. Je vois beaucoup plus que ça ici! - ntherning
Quelle est la disposition de la mémoire? Est-ce enregistré? - Chris S
@ChrisS: J'ai mis à jour la question avec plus d'informations sur les modules de mémoire et la disposition actuelle. - ntherning
Une mauvaise organisation peut causer des dégâts, mais la vôtre est correcte. Je ne suis vraiment pas sûr de ce qui se passe ici, mais je sais que les Opterons actuels ont battu les processeurs Intel actuels dans divers tests de mémoire, parce que les Opterons ont 4 canaux et que Intel n'en a que 3. Il se peut que quelque chose se passe avec la nature à thread unique. du mbw Logiciel; bien que dd montre des résultats similaires ... Pas sûr, mais pas bien. - Chris S


Réponses:


Vous forcez le système à fonctionner en mode monocanal (!) En utilisant 5-5 modules par CPU au lieu de 4-4 ou 8-8. C'est la raison. Essayez de supprimer 1 - 1 et de faire rapport.

Le 6164 est un processeur à socket G34 capable de fonctionner sur quatre canaux si les modules de mémoire sont configurés correctement. Votre configuration est la pire possible.


7
2017-09-25 21:37



Bonne prise sur la population DIMM! :) - ewwhite
La société d’hébergement à laquelle je loue le logiciel a changé la disposition des modules et utilise désormais les emplacements 1-4-7-10-3, comme l’indique HP dans le manuel. Aucune différence notable cependant dans mes tests. Je leur ai maintenant demandé de retirer le dernier module de 4 Go de chaque côté. - ntherning
@chx - il semble que vous ayez eu raison avec le mode monocanal. S'il vous plaît voir ma dernière mise à jour. - ntherning
Vous avez besoin de quatre modules identiques par canal, en fin d’histoire. Et comme il s'agit de deux processeurs, il vous en faut huit pour les faire fonctionner en mode quad-channel. Donc, soit 32 Go ou 64 Go. Il n'y a pas de milieu. - chx
Eh bien, vous avez probablement raison. Mais le nerd en moi ne peut pas laisser ça être comme ça! :-) Si vous n'êtes pas déjà fatigué de moi, aidez-moi à expliquer ceci: ils ont maintenant rajouté les modules de 4 Go qui ont été retirés avant de passer à 40 Go au total et à 5-5. stream à nouveau donne des résultats médiocres. Mais je viens d'essayer de supprimer l'option de démarrage numa = off et, après un flux de redémarrage, me donne presque les excellents résultats que j'ai vus avec 32 Go lors de ma dernière mise à jour. - ntherning