Utilisation élevée de la RAM par Linux pour une raison inconnue

9

après avoir cherché autour de cela et trouvé seulement des messages de personnes qui n'interprètent pas correctement le chiffre "mis en cache", j'ai décidé de poser cette question.

J'ai quelques serveurs à portée de main, qui agissent étrangement. À savoir, leur utilisation de RAM est très élevée, sans raison apparente. Il semble qu'un processus invisible ait beaucoup de RAM "utilisée" (et je veux dire "utilisée").

Voici quelques informations:

  • tous les serveurs exécutent SLES 11
  • le noyau est 3.0.76
  • tous les serveurs fonctionnent en tant qu'invités sous une infrastructure VMWare ESX
  • Je n'ai pas configuré les serveurs et je n'ai pas mon mot à dire dans le choix du système d'exploitation et je n'ai pas accès à l'infrastructure de virtualisation
  • tous les serveurs sont configurés de la même manière et ils exécutent le même ensemble de logiciels (c'est un cluster et oui, je sais, un cluster virtualisé, yada yada, comme dit: j'avais et je n'ai pas mon mot à dire)

Et une sortie shell:

root@good-server:# free -m
             total       used       free     shared    buffers     cached
Mem:         15953      14780       1173          0        737       8982
-/+ buffers/cache:       5059      10894
Swap:        31731          0      31731

root@good-server:# python ps_mem.py
[... all processes neatly listed ...]
---------------------------------
                          4.7 GiB
=================================

root@bad-server:# free -m
             total       used       free     shared    buffers     cached
Mem:         15953      15830        123          0        124       1335
-/+ buffers/cache:      14370       1583
Swap:        31731         15      31716

root@bad-server:# python ps_mem.py
[... all processes neatly listed ...]
---------------------------------
                          4.0 GiB
=================================

Contenu de / proc / meminfo du bon serveur

MemTotal:       16336860 kB
MemFree:          112356 kB
Buffers:          138384 kB
Cached:          1145208 kB
SwapCached:         1244 kB
Active:          4344336 kB
Inactive:        1028744 kB
Active(anon):    3706796 kB
Inactive(anon):   382724 kB
Active(file):     637540 kB
Inactive(file):   646020 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:      32493560 kB
SwapFree:       32477728 kB
Dirty:              1248 kB
Writeback:             0 kB
AnonPages:       4087776 kB
Mapped:            60132 kB
Shmem:               156 kB
Slab:             274968 kB
SReclaimable:     225864 kB
SUnreclaim:        49104 kB
KernelStack:        4352 kB
PageTables:        16400 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:    40661988 kB
Committed_AS:    6576912 kB
VmallocTotal:   34359738367 kB
VmallocUsed:      311400 kB
VmallocChunk:   34359418748 kB
HardwareCorrupted:     0 kB
AnonHugePages:         0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:       73728 kB
DirectMap2M:    16703488 kB

Contenu de / proc / meminfo du mauvais serveur

MemTotal:       16336860 kB
MemFree:         1182320 kB
Buffers:          756244 kB
Cached:          8695688 kB
SwapCached:            0 kB
Active:         13499680 kB
Inactive:         843208 kB
Active(anon):    4853460 kB
Inactive(anon):    37372 kB
Active(file):    8646220 kB
Inactive(file):   805836 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:      32493560 kB
SwapFree:       32493560 kB
Dirty:              1268 kB
Writeback:             0 kB
AnonPages:       4890180 kB
Mapped:            84672 kB
Shmem:               252 kB
Slab:             586084 kB
SReclaimable:     503716 kB
SUnreclaim:        82368 kB
KernelStack:        5176 kB
PageTables:        19684 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:    40661988 kB
Committed_AS:    6794180 kB
VmallocTotal:   34359738367 kB
VmallocUsed:      311400 kB
VmallocChunk:   34359419468 kB
HardwareCorrupted:     0 kB
AnonHugePages:         0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:      112640 kB
DirectMap2M:    16664576 kB

TL; DR - si vous les comparez côte à côte, voici les principales différences (BADserver - GOODserver):

MemFree       -1070 MB
Cached        -7550 MB
Active        -9155 MB
Active(anon)  -1147 MB
Active(file)  -8009 MB
AnonPages     - 802 MB

Les autres différences sont plutôt petites et dans des limites auxquelles on pourrait s'attendre (mais vous pouvez le constater par vous-même)

Comme vous pouvez le voir, sur le bon serveur, le total de la mémoire RES et SHR de tous les processus est à peu près conforme à free -mla sortie de la valeur "used - / + buffers / cache" - ce à quoi vous vous attendez, à droite ?

Maintenant, regardez le mauvais serveur: free -mla valeur de "used - / + buffers / cache" est environ 3 fois plus élevée que ce à quoi vous pourriez vous attendre, résumant tout ce qui pspeut vous montrer.

Cela correspond aussi à ce qui /proc/meminfome dit.

Jusqu'à présent, je ne sais pas comment cela est même possible. Que pourrait-il se passer ici?

luxifer
la source
/proc/meminfoVous dites que les deux sorties sont pour le bon serveur? Pouvez-vous également fournir une mauvaise référence de serveur?
Matthew Ife
Avez-vous un accès à votre console VMware vSphere ou Virtual Center? Ou une façon de voir quelques choses liées à la mémoire des invités?
ewwhite
Veuillez poster la sortie de / proc / zoneinfo
Matthew Ife
@ewwhite non, malheureusement je n'ai absolument aucun accès au-delà du système d'exploitation lui-même.
luxifer
@MatthewIfe l'étiquette meminfo était une faute de frappe - corrigée ... tirant maintenant le contenu de
zoneinfo

Réponses:

12

Je pense que vous pouvez avoir un problème de montgolfière de mémoire VMware . Il est possible que le sur-engagement de mémoire dans l'infrastructure vSphere soit trop élevé. Vous ne pourrez pas corriger cela sans accéder à vSphere vCenter, mais vous devriez pouvoir le détecter à partir de vos machines virtuelles, en supposant que vmtools est installé:

Pouvez-vous poster la sortie de vmware-toolbox-cmd stat balloon?

De plus, vous disposez de 16 Go de RAM. S'il vous plaît demander à quiconque est dans le contrôle de l'infrastructure s'il y a des limites de RAM manuelles placées sur les machines virtuelles en question.

ewwhite
la source
Après avoir lu comment les montgolfières fonctionnent sur vmware linux vms, je pense que c'est la cause. Je ne suis pas du tout impressionné par le fait qu'ils n'offrent pas de moyen du côté de la machine virtuelle pour rendre compte des pages `` utilisées ''.
Matthew Ife
1
C'est en effet correct je pense ... le bon serveur affiche "o MB" ... le mauvais serveur affiche "10092 MB", ce qui correspond à peu près à ce que nous voyons!
luxifer
@luxifer Alors maintenant, vous devez le réparer . Ce qui signifie soit supprimer une limite de RAM artificielle sur la machine virtuelle, soit vMotioning vers un autre hôte ESXi. Demandez à votre équipe d'infrastructure VMware de voir s'il s'agit d'un problème plus répandu .
ewwhite
@ewwhite je vais les informer à coup sûr. Cependant, c'est l'infrastructure d'un de nos clients et normalement ils auraient dû l'identifier. Malheureusement, ce n'est pas ainsi que les fournisseurs de services informatiques mondiaux semblent fonctionner;)
luxifer
@luxifer Sérieusement, je trouve que cela peut se produire dans toutes sortes d'organisations , et les personnes chargées de gérer l'infrastructure vSphere ne semblent pas s'en rendre compte.
ewwhite