Utilizzo elevato di RAM Linux per motivi sconosciuti


9

dopo aver cercato questo e aver trovato solo post di persone che non interpretano correttamente la figura "memorizzata nella cache", ho deciso di porre questa domanda.

Ho alcuni server a portata di mano, che agiscono in modo strano. Vale a dire, il loro utilizzo della RAM è molto elevato, senza motivo apparente. Sembra che un processo invisibile abbia molta RAM "usata" (e intendo "usata").

Ecco alcune informazioni:

  • tutti i server eseguono SLES 11
  • il kernel è 3.0.76
  • tutti i server vengono eseguiti come ospiti in un'infrastruttura VMWare ESX
  • Non ho impostato i server e non ho avuto voce in capitolo nella scelta del sistema operativo né ho accesso all'infrastruttura di virtualizzazione
  • tutti i server sono configurati in modo simile ed eseguono lo stesso set di software (è un cluster e sì, lo so, cluster virtualizzato, yada yada, come detto: avevo e non ho voce in capitolo)

E alcuni output della 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
=================================

Contenuto di / proc / meminfo del buon server

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

Contenuto di / proc / meminfo del server danneggiato

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 si confrontano questi fianco a fianco, ecco le principali differenze (BADserver - GOODserver):

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

Le altre differenze sono piuttosto piccole e nei limiti che ci si potrebbe aspettare (ma si può vedere di persona)

Come puoi vedere, sul buon server il totale di tutta la memoria RES e SHR di tutti i processi è praticamente in linea con free -ml'output del valore "used - / + buffers / cache" - che è quello che ti aspetteresti, giusto ?

Ora guarda il server danneggiato: free -ml'output del valore "used - / + buffers / cache" è circa 3 volte più alto di quanto ti aspetti, riassumendo tutto ciò che pspuò mostrarti.

Questo corrisponde anche a ciò che /proc/meminfomi dice.

Finora non ho idea di come sia possibile. Cosa potrebbe succedere qui?


Entrambe le uscite del /proc/meminfotuo reclamo sono per il buon server? Puoi fornire anche un riferimento al server errato?
Matthew Ife,

Hai accesso alla tua console VMware vSphere o al Virtual Center? O un modo per vedere un paio di cose legate alla memoria degli ospiti?
ewwhite,

Si prega di inviare l'output di / proc / zoneinfo
Matthew Ife il

@ewwhite no, purtroppo non ho assolutamente accesso a nulla oltre al sistema operativo stesso.
luxifer

@MatthewIfe l'etichetta meminfo era un errore di battitura - corretto ... ora
estraeva il

Risposte:


12

Penso che potresti avere un problema con il ballooning della memoria di VMware . È possibile che il sovraccarico di memoria nell'infrastruttura vSphere sia troppo elevato. Non sarai in grado di risolvere questo problema senza accedere a vSphere vCenter, ma dovresti essere in grado di rilevarlo dall'interno delle tue macchine virtuali, supponendo che vmtools sia installato:

Potete per favore pubblicare l'output di vmware-toolbox-cmd stat balloon?

Inoltre, ti sono stati assegnati 16 GB di RAM. Chiedere a chiunque abbia il controllo dell'infrastruttura se sono presenti limiti di RAM manuali posti sulle VM in questione.


Avendo letto come funziona il ballooning su vmware linux vms, penso che questa sia la causa. Non sono molto impressionato dal fatto che non offrono una soluzione dal lato VM per l'account delle pagine "utilizzate".
Matthew Ife,

1
Questo è davvero corretto, penso ... il buon server mostra "o MB" ... il cattivo server mostra "10092 MB", che è praticamente in linea con quello che stiamo vedendo!
luxifer,

@luxifer Quindi ora dovete sistemarlo . Ciò significa che è possibile rimuovere un limite RAM artificiale sulla VM o vMotioning su un altro host ESXi. Chiedi al team dell'infrastruttura VMware di vedere se si tratta di un problema più diffuso .
ewwhite,

@ewwhite, lo informerò di sicuro. Tuttavia, è l'infrastruttura di uno dei nostri clienti e normalmente avrebbero dovuto identificarlo. Sfortunatamente, non è così che sembrano funzionare grandi fornitori di servizi IT in tutto il mondo;)
luxifer

@luxifer Seriamente, trovo che ciò possa accadere in tutti i tipi di organizzazioni e le persone incaricate di gestire l'infrastruttura vSphere non sembrano rendersene conto.
ewwhite,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.