Uso alto de RAM no Linux por motivos desconhecidos

7

depois de procurar por isso e só encontrar posts de pessoas que não interpretam corretamente a figura "em cache", decidi fazer essa pergunta.

Eu tenho alguns servidores na mão, que agem estranhamente. Ou seja, o uso de RAM é muito alto, sem motivo aparente. Parece que um processo invisível tem muita RAM "usada" (e eu quero dizer "usado").

Veja algumas informações:

  • todos os servidores executam o SLES 11
  • O
  • kernel é 3.0.76
  • todos os servidores são executados como convidados em uma infraestrutura VMWare ESX
  • Eu não configurei os servidores e não tive voz na escolha do SO nem tenho acesso à infraestrutura de virtualização
  • todos os servidores são configurados de forma semelhante e executam o mesmo conjunto de software (é um cluster e, sim, eu sei, cluster virtualizado, yada yada, como dito: eu tive e não tenho nada a dizer sobre isso)

E alguma saída de 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
=================================

Conteúdo de / proc / meminfo do bom servidor

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

Conteúdo de / proc / meminfo do servidor ruim

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 - se você comparar estes lado-a-lado, veja as principais diferenças (BADserver - GOODserver):

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

As outras diferenças são pequenas e dentro dos limites que se pode esperar (mas você pode ver por si mesmo)

Como você pode ver, no bom servidor o total de todas as memórias RES e SHR de todos os processos está praticamente alinhado com a saída de free -m para o valor "used - / + buffers / cache" - que é o que você esperaria, certo?

Agora olhe para o servidor defeituoso: a saída de free -m para o valor "used - / + buffers / cache" é cerca de 3 vezes mais alta do que você poderia imaginar, resumindo tudo que ps pode mostrar.

Isso também corresponde ao que /proc/meminfo me diz.

Até agora não tenho ideia de como isso é possível. O que pode estar acontecendo aqui?

    
por luxifer 18.02.2015 / 11:56

1 resposta

11

Acho que você pode ter um problema de balão de memória da VMware . Há uma chance de supercomprometimento de memória na infraestrutura do vSphere ser muito alto. Você não poderá remediar isso sem ter acesso ao vSphere vCenter, mas poderá detectar isso de dentro de suas máquinas virtuais, supondo que vmtools estejam instalados:

Por favor, poste a saída de vmware-toolbox-cmd stat balloon ?

Além disso, você recebeu 16 GB de RAM. Por favor, pergunte a quem quer que esteja no controle da infraestrutura, se houver algum limite manual de RAM colocado nas VMs em questão.

    
por 18.02.2015 / 12:29