troca ou lixeira com grandes quantidades de pagecache não mapeado

1

Estou usando o kubuntu jaunty (i386 32bit), kernel 2.6.28-13-generic. Eu tenho 4Gb de RAM, dos quais apenas 3317Mb são vistos pelo sistema (eu acho que por causa do sistema de 32 bits).

Estou vendo que a utilização de pagecache está crescendo continuamente, até o ponto em que o sistema está inutilizável (após alguns dias). Isso também acontece quando não faço nada (todos os aplicativos do usuário são fechados e o mínimo de serviços é ativado).

Se ativado, o sistema começa a usar o espaço de troca (usando tudo no final).
Mesmo se a troca estiver desabilitada, a atividade do disco se tornará contínua, com o sistema sem resposta. Por exemplo, neste momento o sistema está funcionando (ainda que um pouco lento), com apenas o Firefox e o wing ide rodando, e eu tenho 2Gb em cache com apenas 45Mb mapeados:

$ free
             total       used       free     shared    buffers     cached
Mem:       3346388    3247328      99060          0       8416    2117980
-/+ buffers/cache:    1120932    2225456
Swap:      2144668     519448    1625220

$ cat /proc/meminfo
MemTotal:        3346388 kB
MemFree:           97128 kB
Buffers:            7872 kB
Cached:          2120224 kB
SwapCached:       413860 kB
Active:          2304596 kB
Inactive:         865984 kB
Active(anon):    2279168 kB
Inactive(anon):   830236 kB
Active(file):      25428 kB
Inactive(file):    35748 kB
Unevictable:          32 kB
Mlocked:              32 kB
HighTotal:       2492940 kB
HighFree:           5456 kB
LowTotal:         853448 kB
LowFree:           91672 kB
SwapTotal:       2144668 kB
SwapFree:        1625244 kB
Dirty:                84 kB
Writeback:             0 kB
AnonPages:        629304 kB
Mapped:            45768 kB
Slab:              45600 kB
SReclaimable:      21756 kB
SUnreclaim:        23844 kB
PageTables:         4468 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     3817860 kB
Committed_AS:    3735020 kB
VmallocTotal:     122880 kB
VmallocUsed:        9352 kB
VmallocChunk:      66600 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       4096 kB
DirectMap4k:       16376 kB
DirectMap4M:      888832 kB

Se eu tentar derrubar os caches, pouco acontece:

# sync ; echo 3 > /proc/sys/vm/drop_caches ; free
             total       used       free     shared    buffers     cached
Mem:       3346388    3220580     125808          0       3020    2100600
-/+ buffers/cache:    1116960    2229428
Swap:      2144668     519356    1625312

Agora eu tenho vm.swappiness = 5, mas eu tentei também com 0 e 1 (sem diferenças perceptíveis).
Eu também tentei vm.vfs_cache_pressure = 50 e 150 (novamente, sem diferenças).

Como eu disse, o pagecache consome toda a memória, mesmo com a troca desativada.
O que está acontecendo? Como evitar isso?

    
por Marco 26.03.2010 / 11:35

0 respostas