Eu desenvolvo um sistema (baseado em x86_64) que roda o Linux (Ubuntu 14.04.3) e tem várias partes de hardware customizado conectado. Eu escrevi drivers e software de controle para o hardware personalizado.
Depois de executar testes durante um longo período de tempo (vários dias) neste sistema, notei que a quantidade de memória livre (como mostrado por cat /proc/meminfo
e o comando free
) estava em constante declínio. A quantidade de memória usada pelos meus processos de espaço do usuário estava bem dentro do razoável. Limpei o cache de páginas, mas teve pouco efeito sobre a quantidade de memória livre.
Eu reiniciei o sistema e, em seguida, escrevi um script para executar um teste simples em um loop 500 vezes, limpar o cache de páginas e, em seguida, gravar a saída de /proc/meminfo
em um arquivo. Em seguida, executei esse script durante vários dias para coletar alguns pontos de dados. Depois de analisar os dados resultantes, percebi que a quantidade de memória livre (MemFree, MemAvailable também) diminuía de forma linear, enquanto as outras categorias permaneciam praticamente estáveis. Eu coletei dados demais para postar aqui, mas aqui estão os primeiros e os últimos pontos de dados:
_Run 1_ _Run 650_
MemTotal: 65738276 65738276
MemFree: 65182220 30881420
MemAvailable: 65124632 30824008
Buffers: 2292 2064
Cached: 101204 100816
SwapCached: 0 0
Active: 174772 195008
Inactive: 82924 82444
Active(anon): 154304 174712
Inactive(anon): 66624 66628
Active(file): 20468 20296
Inactive(file): 16300 15816
Unevictable: 0 0
Mlocked: 0 0
SwapTotal: 66978812 66978812
SwapFree: 66978812 66978812
Dirty: 188 184
Writeback: 0 0
AnonPages: 154296 180848
Mapped: 99760 99360
Shmem: 66672 66676
Slab: 46836 48352
SReclaimable: 17000 18008
SUnreclaim: 29836 30344
KernelStack: 4176 4128
PageTables: 7244 6680
NFS_Unstable: 0 0
Bounce: 0 0
WritebackTmp: 0 0
CommitLimit: 99847948 99847948
Committed_AS: 433008 417576
VmallocTotal: 34359738367 34359738367
VmallocUsed: 1886988 1886956
VmallocChunk: 34357817344 34357817344
HardwareCorrupted: 0 0
AnonHugePages: 106496 126976
CmaTotal: 0 0
CmaFree: 0 0
HugePages_Total: 0 0
HugePages_Free: 0 0
HugePages_Rsvd: 0 0
HugePages_Surp: 0 0
Hugepagesize: 2048 2048
DirectMap4k: 93872 93872
DirectMap2M: 1894400 1894400
DirectMap1G: 67108864 67108864
Observe que um pouco mais da metade dos 64GB de memória do sistema é consumido de alguma forma, embora não pareça haver um aumento significativo em nenhuma outra categoria.
Aqui estão algumas das coisas que fiz para tentar descobrir o problema:
Estou completamente perplexo e rapidamente sem ideias.
Alguém tem alguma idéia sobre o que está acontecendo e / ou sugestões de como descobrir isso?
Tags memory linux linux-kernel