Rastreando o uso de memória do Linux quando não aparece no cache

5

Antes de você obter seus forcados fora, estou tendo problemas para rastrear onde a memória está indo para o sistema de cache no Linux. Eu vi o Linux comeu minha RAM! , e e

Para este sistema, eu entendo que ele é provavelmente "armazenado em cache", ou usado pelos programas, mas os números nem estão chegando perto de somar para mim.

No topo, vejo.

top - 09:04:09 up 19 days, 20:38,  2 users,  load average: 0.00, 0.10, 0.11
Tasks: 160 total,   1 running, 159 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.1%us,  0.2%sy,  0.0%ni, 99.8%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:  65974296k total, 43507804k used, 22466492k free,   305336k buffers
Swap:  7548924k total,        0k used,  7548924k free,  1480836k cached

Eu entendo, 43GB de RAM "used" não é realmente verdade, provavelmente a maior parte provavelmente é armazenada em cache. Então, cavando nele eu corri:

$ free -m
             total       used       free     shared    buffers     cached
Mem:         64428      38845      25582          0        298       1445
-/+ buffers/cache:      37101      27326
Swap:         7371          0       7371

Então, isso mostra que 37GB são realmente usados e apenas 1445MB são armazenados em cache (é onde eu esperaria ver o 1445 ser algo como 20000). Os sites que eu relacionei acima mostram que a coluna "cache" geralmente é bem alta. Então, cavando mais eu fui e fiz o seguinte para verificar os aplicativos que estavam usando a memória.

    sudo smem -t
      PID User     Command                         Swap      USS      PSS      RSS
9468
    21475 root     python /usr/bin/smem -t            0     6212     6234     6984
     2431 root     /opt/OV/lbin/perf/coda             0     7156     8060    12068
     2213 root     /opt/perf/bin/perfd                0    19056    19485    22032
    20849 root     /opt/shiny-server/ext/node/        0    77244    77321    78616
    21325 atpa     /usr/lib64/R/bin/exec/R --n        0  3729836  3733774  3739520
    21287 atpa     /usr/lib64/R/bin/exec/R --n        0  4060136  4064074  4069820
    -------------------------------------------------------------------------------
       63 11     

                                     0  7947984  7970344  8054032

Portanto, duas aplicações de R estão usando ~ 8GB de memória.

Os outros artigos que eu relacionei acima mostram que o Linux estava "reservando" a memória e mantendo-a em cache (por exemplo, free -m mostrou que o cache era alto valor na linha "Mem:"), enquanto no meu caso parecia Na verdade, em uso, mas nenhum aplicativo realmente parece estar relatando o uso da memória e não consigo rastrear onde o Linux está usando (armazenando em cache / reservando?) a memória.

Onde esta memória está indo? Estou assumindo que o Linux está usando, mas não consigo determinar onde está sendo utilizado.

/proc/meminfo mostra

MemTotal:       65974296 kB
MemFree:        24191624 kB
Buffers:          305320 kB
Cached:          1480760 kB
SwapCached:            0 kB
Active:          7769776 kB
Inactive:         215532 kB
Active(anon):    6199392 kB
Inactive(anon):      476 kB
Active(file):    1570384 kB
Inactive(file):   215056 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:       7548924 kB
SwapFree:        7548924 kB
Dirty:               116 kB
Writeback:             0 kB
AnonPages:       6172696 kB
Mapped:            47400 kB
Shmem:               652 kB
Slab:             255468 kB
SReclaimable:     225620 kB
SUnreclaim:        29848 kB
KernelStack:        1736 kB
PageTables:        18780 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:    40536072 kB
Committed_AS:    6455352 kB
VmallocTotal:   34359738367 kB
VmallocUsed:      247288 kB
VmallocChunk:   34359487760 kB
HardwareCorrupted:     0 kB
AnonHugePages:   2586624 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:       10240 kB
DirectMap2M:    67098624 kB
    
por Kevin Vasko 14.11.2016 / 16:35

1 resposta

4

Acho que encontrei meu problema ...

Meu problema parece ter sido o sistema de balão de memória da VMware. Basicamente, essa é uma forma de o sistema host aplicar pressão de memória ao sistema operacional convidado, consumindo a alocação de memória dos convidados quando outros hosts começam a usar uma quantidade significativa de memória.

link

Se você estiver usando o VMware, execute o comando

vmware-toolbox-cmd stat balloon

Isso mostrará a quantidade de memória em balão.

Para mim

#:vmware-toolbox-cmd stat balloon
32425 MB

Outras fontes: link

Desative a memória em balão para validar o problema

Desobstrução da memória: link

    
por 15.11.2016 / 17:09