Memória cache do Linux: mais de 85% da memória cache e usando swap

3

Eu li sobre Linux e memória cache no linuxatemyram mas há algo que não faz sentido para mim, se o servidor tiver mesmo com uma carga baixa, em vez de liberar alguma memória em cache, ela começa a usar o swap, o que torna o servidor lento.

Mesmo agora, quando a carga do servidor é load average: 0.00, 0.00, 0.00 , alguma memória é trocada enquanto mais de 85% da memória é usada para troca.

Eu li perguntas semelhantes, como este e isso , mas é mencionado que a troca não deveria acontecer. Além disso, até 3 semanas atrás, uma parte muito menor da memória era tomada pelo cache, e não alteramos nada que deveria afetar a memória em cache.

Poderia, por favor, me dizer se esses valores ainda estão corretos ou se eu tenho um problema?

Obrigado!

[root@web01 ~]# cat  /proc/meminfo
MemTotal:      5183448 kB
MemFree:        249260 kB
Buffers:        330848 kB
Cached:        4317828 kB
SwapCached:         92 kB
Active:        2883596 kB
Inactive:      1882468 kB
HighTotal:     4315324 kB
HighFree:        63516 kB
LowTotal:       868124 kB
LowFree:        185744 kB
SwapTotal:     5799928 kB
SwapFree:      5799796 kB
Dirty:             368 kB
Writeback:           0 kB
AnonPages:      117356 kB
Mapped:          21076 kB
Slab:           152668 kB
PageTables:       4184 kB
NFS_Unstable:        0 kB
Bounce:              0 kB
CommitLimit:   8391652 kB
Committed_AS:   268708 kB
VmallocTotal:   116728 kB
VmallocUsed:      5404 kB
VmallocChunk:   110964 kB
HugePages_Total:     0
HugePages_Free:      0
HugePages_Rsvd:      0
Hugepagesize:     2048 kB

[root@web01 ~]# free
             total       used       free     shared    buffers     cached
Mem:       5183448    4932936     250512          0     330840    4317340
-/+ buffers/cache:     284756    4898692
Swap:      5799928        132    5799796

[root@web01 ~]# uname -a
Linux web01 2.6.18-164.15.1.el5PAE #1 SMP Wed Mar 17 12:14:29 EDT 2010 i686 i686 i386 GNU/Linux
    
por Kuf 08.08.2012 / 16:57

2 respostas

9

Não! Em seu post de exemplo, efetivamente nada é usado para swap. Você está usando 92k (ou 132k na segunda tela) de swap, que é incidental e trivial.

A memória cache é uma memória livre que foi preenchida com o conteúdo dos blocos no disco. Ele será desocupado assim que o espaço for necessário por qualquer outra coisa. Isso é uma coisa boa que melhora o desempenho.

Compare sua pergunta com o O servidor se recusa a usar a partição virtual .

Quanto ao motivo pelo qual um servidor pode trocar dados em vez de liberar o cache, pode ser que seus dados armazenados em cache estivessem sendo lidos muito mais do que seus dados armazenados na memória. Às vezes, os programas têm páginas que raramente, ou nunca, visitam. Esse espaço é melhor utilizado pelo armazenamento em cache.

A configuração vm.swappiness (também modificável ao vivo através de / proc ...) afetará isso, mas passará algum tempo observando atentamente o que está acontecendo antes de ajustá-lo, especialmente com seus contadores swap / in / out. sar e atop são ferramentas úteis para isso.

    
por 08.08.2012 / 18:56
1

Tente adicionar vm.swappiness = 0 a /etc/sysctl.conf e executar sysctl -p , isso instruirá o kernel a liberar a memória ocupada pelo cache de arquivos mais agressivamente se um aplicativo de usuário exigir uma região de memória do kernel.

    
por 08.08.2012 / 17:02