Ferramenta simples para representar graficamente o uso de memória?
14
Existe um script que mostre o uso da memória como um gráfico, por exemplo, como um gráfico de pizza, com cada processo sendo uma fatia separada?
Não estou procurando algo como Munin para representar graficamente o uso da memória ao longo do tempo, mas sim mostrar o uso da memória por processo em um único momento.
Para tornar minha solicitação ainda mais obscura, é para um servidor sem cabeça (portanto, não há aplicativos X). A maneira mais simples seria escrever um arquivo PNG, ou possivelmente um arquivo HTML (que poderia usar Javascript para permitir a filtragem de processos, alternando entre tipos de gráficos e assim por diante)
A contabilidade da memória por processo é complicada por várias razões em que entrarei em um minuto. Para um monitoramento simples, scripts gkrellmd ou nagios provavelmente são suficientes. Se você deseja maior precisão, precisará procurar mais.
A smem introduz o conceito de tamanho proporcional do conjunto :
Como grandes partes da memória física geralmente são compartilhadas entre vários aplicativos, a medida padrão do uso da memória, conhecida como RSS (tamanho do conjunto residente), superestima significativamente o uso da memória. O PSS mede o "compartilhamento justo" de cada aplicativo de cada área compartilhada para fornecer uma medida realista.
Exemplo: você inicia o GNOME, fazendo com que vários processos sejam iniciados, um para cada applet e programa. Todos eles estão vinculados ao libglib. O Linux carrega o libglib em um bloco de memória e o mapeia em todos os processos que desejam o libglib. A contabilidade de memória ingênua conta o tamanho total da libglib em todos os processos vinculados a ela.
O smem divide o custo do libglib entre os processos que o utilizam, para fornecer uma imagem mais próxima da realidade. Ele também possui várias opções para exibir o uso de memória (no site):
Mostrar informações básicas do processo smem
Mostrar visualização do sistema smem -R 4G -K / caminho / para / vmlinux -w
Mostrar totais e porcentagens smem -t -p
Mostrar colunas diferentes smem -c "name user pss"
Mostrar processos filtrados pelo mapeamento smem -M libxml
Mostrar mapeamentos filtrados pelo processo smem -m -P [e] volution
Leia dados do capture tarball smem --source capture.tar.gz
Mostrar um gráfico de barras marcado com a etiqueta pid smem --bar pid -c "pss uss"
Mostre um gráfico circular do RSS rotulado pelo nome smem --pie name -s rss
Você precisará, no entanto, de um kernel muito recente (> 2.6.27).
Sim, a sugestão de que o 2.6.27 é razoavelmente recente é bastante risível. As únicas distros que eu conheço que vêm com um kernel mais recente são o Fedora 10 e o Ubuntu 9.01.
Dave Cheney
9,04; O Ubuntu 8.10 é fornecido com o 2.6.27, mas o 2.6.30 está no rc3.
Jldugger #
Minhas desculpas, passei muito tempo em terras RHEL, onde 2.6.18 é considerado recente.
Dave Cheney
5
Não consigo pensar em nada da prateleira
no entanto, uma combinação de um script PHP executando ps -AH v | awk '{print $ 8, $ 9, $ 10}' e usá-lo com o pChart pode fornecer uma página da web que faria o que você está procurando? (uso em Kb, porcentagem do total e nome do processo)
Se você realmente gosta de níveis mais baixos de detalhes, não se esqueça de colecionar. Aqui está um exemplo dos tipos de utilização de memória por processo que podem ser relatados:
RECORD 1 cag-dl585-02 (1244758290.002) (qui jun 11 18:11:30 2009)
RESUMO DO PROCESSO (os contadores são / s)
# Usuário PID S VmSize VmLck VmRSS VmData VmStk VmExe VmLib MajF Comando MinF
9089 root S 66856K 0 2328K 1440K 212K 736K 6812K 0 0 sendmail:
9097 smmsp S 57600K 0 1772K 1304K 204K 736K 5904K 0 0 sendmail:
9108 raiz S 6428K 0 360K 180K 84K 88K 1944K 0 0 gpm
9120 raiz S 74808K 0 1136K 476K 520K 48K 1920K 0 0 crond
9173 xfs S 20904K 0 1828K 1124K 88K 104K 3084K 0 0 xfs
Se você estiver interessado em processos específicos, poderá especificar filtros apropriados (incluindo uma opção para mostrar threads).
E se você estiver interessado em memória em geral, ele também pode mostrar detalhes da laje e ainda possui uma saída no formato vmstat. Por que você deseja mostrar dados no formato vmstat quando a ferramenta existente já faz isso? Isso é fácil - coletivamente, você pode registrar estatísticas em um arquivo e reproduzi-lo posteriormente em vários formatos.
Não é exatamente o que você está procurando, mas talvez você possa adaptá-lo às suas necessidades usando esta referência (procure por Uso da memória por processo).
Não entrei em mais detalhes, mas o collectl tem uma opção para gerar saída separada por delimitador. No caso do gnuplot, você apenas gera seus dados com espaços e está pronto. Ele ainda carrega muito bem no Excel. Se você deseja vírgulas, pode alterar o delimitador e, se realmente deseja executar a rota rrd (apenas tome cuidado, pois os gráficos não correspondem aos dados!), Você pode alterar o delimitador para dois pontos e até alterar os carimbos de hora para UTC. -marca
O kSar, baseado em dados sar, mas baseado em java, é mais ou menos independente da plataforma e permitirá que você faça ssh em um host remoto para buscar os dados.
Não consigo pensar em nada da prateleira
no entanto, uma combinação de um script PHP executando ps -AH v | awk '{print $ 8, $ 9, $ 10}' e usá-lo com o pChart pode fornecer uma página da web que faria o que você está procurando? (uso em Kb, porcentagem do total e nome do processo)
fonte
Dê uma olhada no sarface - isso depende dos dados do sar e você pode monitorar o uso da memória (e todos os outros dados do sar / sysstat) ao vivo.
fonte
e quanto a collectd ?
fonte
Faça Você Mesmo. Faça um script de shell simples atualizando o banco de dados RRD. Em seguida, desenhe um gráfico usando rrdtool.
fonte
Se você realmente gosta de níveis mais baixos de detalhes, não se esqueça de colecionar. Aqui está um exemplo dos tipos de utilização de memória por processo que podem ser relatados:
Se você estiver interessado em processos específicos, poderá especificar filtros apropriados (incluindo uma opção para mostrar threads).
E se você estiver interessado em memória em geral, ele também pode mostrar detalhes da laje e ainda possui uma saída no formato vmstat. Por que você deseja mostrar dados no formato vmstat quando a ferramenta existente já faz isso? Isso é fácil - coletivamente, você pode registrar estatísticas em um arquivo e reproduzi-lo posteriormente em vários formatos.
tente, você vai gostar
fonte
Se você quiser capturas instantâneas de memória em diferentes intervalos de tempo ... defina a tarefa cron no intervalo desejado e execute o script.
espero que ajude....
fonte
Não é exatamente o que você está procurando, mas talvez você possa adaptá-lo às suas necessidades usando esta referência (procure por Uso da memória por processo).
fonte
Hmm, o FAQ do gnuplot diz que não suporta gráficos de pizza , mas eles sugerem o gráfico de partes de Bernhard Reiter .
fonte
Você pode usar #top ou #sysstat
fonte
Não entrei em mais detalhes, mas o collectl tem uma opção para gerar saída separada por delimitador. No caso do gnuplot, você apenas gera seus dados com espaços e está pronto. Ele ainda carrega muito bem no Excel. Se você deseja vírgulas, pode alterar o delimitador e, se realmente deseja executar a rota rrd (apenas tome cuidado, pois os gráficos não correspondem aos dados!), Você pode alterar o delimitador para dois pontos e até alterar os carimbos de hora para UTC. -marca
fonte
O kSar, baseado em dados sar, mas baseado em java, é mais ou menos independente da plataforma e permitirá que você faça ssh em um host remoto para buscar os dados.
http://ksar.atomique.net/
fonte
O phpsysinfo não permite que você veja as informações do processo de alguma forma?
fonte