Wysokie użycie pamięci RAM w systemie Linux z nieznanego powodu

9

po wyszukaniu tego i znalezieniu postów osób, które nie interpretują poprawnie „buforowanej” postaci, postanowiłem zadać to pytanie.

Mam pod ręką kilka serwerów, które działają dziwnie. Mianowicie, ich użycie pamięci RAM jest bardzo wysokie, bez wyraźnego powodu. Wygląda na to, że niewidzialny proces ma dużo „używanej” pamięci RAM (a mam na myśli „używaną”).

Oto kilka informacji:

  • na wszystkich serwerach działa SLES 11
  • jądro to 3.0.76
  • wszystkie serwery działają jako goście w ramach infrastruktury VMWare ESX
  • Nie skonfigurowałem serwerów i nie miałem nic do powiedzenia w wyborze systemu operacyjnego, ani nie mam dostępu do infrastruktury wirtualizacji
  • wszystkie serwery są skonfigurowane podobnie i działają na tym samym zestawie oprogramowania (to klaster i tak, wiem, zwirtualizowany klaster, yada yada, jak powiedziano: miałem i nie mam nic do powiedzenia)

I niektóre dane wyjściowe powłoki:

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
=================================

Zawartość / proc / meminfo dobrego serwera

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

Zawartość / proc / meminfo złego serwera

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 - jeśli porównasz je obok siebie, oto główne różnice (BADserver - GOODserver):

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

Inne różnice są raczej niewielkie i mieszczą się w granicach, których można się spodziewać (ale sam możesz to zobaczyć)

Jak widać, na dobrym serwerze całkowita pamięć RES i SHR wszystkich procesów jest w zasadzie zgodna z danymi free -mwyjściowymi dla wartości „używane - / + bufory / pamięć podręczna” - czego można się spodziewać, prawda ?

Spójrzmy teraz na zły serwer: free -mdane wyjściowe dla wartości „używane - / + bufory / pamięć podręczna” są około 3 razy wyższe, niż można się spodziewać, podsumowując wszystko, co psmoże pokazać.

To również pasuje do tego, co /proc/meminfomi mówi.

Jak dotąd nie mam pojęcia, jak to w ogóle możliwe. Co tu się dzieje?

luxifer
źródło
Oba wyniki /proc/meminfotwojego twierdzenia są na dobrym serwerze? Czy możesz również podać złe odniesienie do serwera?
Matthew Ife
Czy masz dostęp do konsoli VMware vSphere lub Centrum wirtualnego? Lub jakiś sposób, aby zobaczyć kilka rzeczy związanych z pamięcią gości?
ewwhite
Proszę zamieścić dane wyjściowe / proc / zoneinfo
Matthew Ife
@ Nie, niestety nie mam absolutnie żadnego dostępu do niczego poza samym systemem operacyjnym.
luxifer
@MatthewIfe etykieta meminfo była literówką - poprawiłem ją ... teraz
ściągam

Odpowiedzi:

12

Myślę, że możesz mieć problem z balonowaniem pamięci VMware . Istnieje prawdopodobieństwo, że nadmierne zaangażowanie pamięci w infrastrukturze vSphere jest zbyt duże. Nie będziesz w stanie zaradzić temu bez dostępu do vSphere vCenter, ale powinieneś być w stanie wykryć to z poziomu twoich maszyn wirtualnych, zakładając, że vmtools są zainstalowane:

Czy możesz opublikować wynik vmware-toolbox-cmd stat balloon?

Ponadto przydzielono ci 16 GB pamięci RAM. Zapytaj, kto ma kontrolę nad infrastrukturą, czy na maszynach wirtualnych są jakieś ręczne limity pamięci RAM.

ewwhite
źródło
Po przeczytaniu, jak działa balonowanie na vmware linux vms, myślę, że to jest przyczyną. Nie jestem jednak pod wrażeniem, że nie oferują one drogi od strony maszyny wirtualnej do konta dla „używanych” stron.
Matthew Ife
1
Myślę, że jest to poprawne… dobry serwer pokazuje „o MB”… zły serwer pokazuje „10092 MB”, co jest w zasadzie zgodne z tym, co widzimy!
luxifer
@luxifer Więc teraz musicie to naprawić . Co oznacza albo usunięcie sztucznego limitu pamięci RAM na maszynie wirtualnej, albo vMotioning do innego hosta ESXi. Zapytaj zespół infrastruktury VMware, czy jest to bardziej powszechny problem .
ewwhite
@ewwhite Powiadomię ich na pewno. Jest to jednak infrastruktura jednego z naszych klientów i zwykle powinni to zidentyfikować. Niestety, nie tak działają najwięksi światowi dostawcy usług IT;)
lux 18.02.15
@luxifer Poważnie, stwierdzam, że może się to zdarzyć we wszelkiego rodzaju organizacjach , a ludzie, którym powierzono zadanie zarządzania infrastrukturą vSphere, nie zdają sobie z tego sprawy.
ewwhite