Primeiro, esses dados são difíceis de representar em um banco de dados RRD . Porque seus 10 PIDs / processos serão alterados, mas as fontes de dados RRD são estáticas. Você pode registrar 1-10, mas não consegue mais informações. Você poderia contornar isso mapeando um nome / pid para uma fonte de dados, mas então você precisa apresentar todos os nomes necessários com antecedência, o que não é fácil. Alternativamente, você poderia criar 65536 fontes de dados para cada pid, mas, em seguida, o gráfico é um pouco complicado.
Pode haver tempo para tentar algo um pouco mais extensível, como OpenTSDB
Segundo, monitorar o uso real de memória no Linux não é fácil. ps
mentiras. O Linux faz uso da memória compartilhada e não fornece uma interface simples para consultar essas informações em um nível por processo. Também há memória do kernel e caches que podem afetar o desempenho da memória em uma máquina.
Existem 3 coisas que você pode acompanhar para ajudar a destacar problemas de memória.
- Por memória compartilhada e privada executável
- Por memória particular do processo
- Memória do Kernel
Por memória compartilhada e privada executável
Este script ps_mem.py , que é a melhor estimativa "pronta para uso" Encontrei.
Nota "esses valores são por programa , não por processo", o que é um subproduto da maneira como a memória compartilhada funciona e a contabilidade feita no kernel.
Memória privada, por processo
Você pode obter a memória privada por processo a partir de /proc/[0-9]*/smaps
calculando todos os valores de Private_Dirty
e Private_Clean
por arquivo. Nomes de processos que você pode obter de /proc/[0-9]*/status
ou /proc/[0-9]*/stat
Meminfo
Valores gerais de uso de memória de /proc/meminfo
MemTotal
MemFree
Buffers
Cached
SwapTotal
SwapFree
AnonPages
Mapped
Dirty
Writeback
Shmem
Slab
KernelStack
PageTables
NFS_Unstable
Bounce
WritebackTmp
Há um monte de informações que você pode extrapolar a partir dos valores em /proc/meminfo
, que são provavelmente coisas melhores para representar graficamente do que todos esses pontos de dados individualmente.
A partir desses três, você deve ter uma boa ideia de onde a maioria dos problemas de memória se originou.
Depois de tudo isso eu ainda acho que ainda existe um 'buraco' no qual o Linux é responsável pela memória alocada. Este buraco parece ser o mapa de memória física virtual > como o buraco é maior quanto mais memória uma máquina tiver.