it-swarm-pt.tech

Ferramenta simples para representar graficamente o uso de memória?

Existe um script que mostrará o uso da memória como um gráfico, por exemplo, um gráfico de pizza, com cada processo sendo uma fatia separada?

Não estou procurando algo como Munin para representar graficamente o uso de memória ao longo do tempo, mas sim mostrar o uso de memória por processo em um único ponto no tempo.

Para tornar minha solicitação ainda mais obscura, é para um servidor headless (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áfico e assim por diante)

14
dbr

A contabilidade de memória por processo é complicada por vários motivos que abordarei em um minuto. Para monitoramento simples, scripts gkrellmd ou nagios são provavelmente suficientes. Se quiser maior precisão, você precisará procurar mais.

smem introduz o conceito de Tamanho do conjunto proporcional:

Como grandes partes da memória física são normalmente compartilhadas entre vários aplicativos, a medida padrão de uso da memória conhecida como tamanho do conjunto residente (RSS) superestimará significativamente o uso da memória. Em vez disso, o PSS mede a "parcela justa" 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 miniaplicativo e programa. Todos eles estão vinculados à libglib. O Linux carrega libglib em um bloco de memória e mapeia em cada processo que deseja libglib. A contabilidade de memória ingênua conta o tamanho total da libglib em relação a cada processo vinculado a ela.

smem divide o custo da libglib entre os processos que a utilizam, para dar uma imagem mais próxima da realidade. Ele também tem uma série de opções para exibir o uso de memória (do site):

  1. Mostrar smem de informações básicas do processo
  2. Mostrar visualização do sistema smem -R 4G -K/caminho/para/vmlinux -w
  3. Mostrar totais e percentagens smem -t -p
  4. Mostrar colunas diferentes smem -c "nome usuário pss"
  5. Mostrar processos filtrados por mapeamento smem -M libxml
  6. Mostrar mapeamentos filtrados pelo processo smem -m -P [e] volução
  7. Leia os dados do tarball de captura smem --source capture.tar.gz
  8. Mostrar um gráfico de barras rotulado por pid smem --bar pid -c "pss uss"
  9. Mostrar um gráfico de pizza de RSS rotulado por nome smem --pie nome -s rss

No entanto, você precisará de um kernel muito recente (> 2.6.27).

13
jldugger

Não consigo pensar em nada fora da prateleira

entretanto, um combo de um PHP script exec'ing ps -AH v | awk '{print $ 8, $ 9, $ 10}' e usando isso com pChart pode dar a você uma página da web que faria o que você está procurando? (uso em Kb, porcentagem do total e nome do processo)

5
Mark Regensberg

Dê uma olhada em sarface - depende dos dados do sar, e você pode monitorar seu uso de memória (e todos os outros dados do sar/sysstat) ao vivo.

2
Xerxes

e que tal collectd ?

1
jnrg

Faça Você Mesmo. Faça um script Shell simples atualizando o banco de dados RRD. Em seguida, desenhe um gráfico usando rrdtool.

1
ahes

Se você estiver realmente interessado em níveis mais baixos de detalhes, não se esqueça de coletar. Aqui está um exemplo dos tipos de utilização de memória por processo que pode relatar:

 REGISTRO 1 cag-dl585-02 (1244758290.002) (Quinta-feira, 11 de junho, 18:11:30 2009) 
 
 RESUMO DO PROCESSO (os contadores são /sec)
# Usuário PID S VmSize VmLck VmRSS VmData VmStk VmExe VmLib MajF MinF Comando 
 9089 root S 66856K 0 2328K 1440K 212K 736K 6812K 0 0 sendmail: 
 9097 smmsp S 57600K 0 1772K 0 sendmail 53690 204K 204 : 
 9108 root S 6428K 0 360K 180K 84K 88K 1944K 0 0 gpm 
 9120 root 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 estiver interessado em processos específicos, você pode especificar os filtros apropriados (incluindo uma opção para mostrar tópicos).

E se você estiver interessado em memória em geral, ele também pode mostrar detalhes de placas e até mesmo ter uma saída no formato vmstat. Por que você deseja mostrar os dados no formato vmstat quando a ferramenta existente já faz isso? Isso é fácil - com o coletivamente, você pode registrar estatísticas em um arquivo e reproduzi-lo posteriormente em vários formatos.

experimente, você vai gostar

1
Mark Seger
  1. Grep o (s) processo (s).
  2. Analise a saída e salve em formato separado por vírgulas em um arquivo de texto.
  3. abra o arquivo separado por vírgulas no Excel.
  4. Desenhe o gráfico para esses dados usando o utilitário gráfico do Excel.

Se você quiser instantâneos de memória em intervalos de tempo diferentes ... defina o cron job no intervalo desejado e execute o script.

espero que ajude....

1
Manu

Hmm, o gnuplot FAQ diz não oferece suporte a gráficos de pizza , mas eles sugerem piechart de Bernhard Reiter .

0
Philip Durbin

Você pode usar #top ou #sysstat

0
Rajat

Isto não é exatamente o que você está procurando, mas talvez você possa adaptá-lo às suas necessidades usando esta referência (procure por "Uso de memória por processo").

0
Ivan

kSar, baseado em dados sar, mas é Java baseado, então é mais ou menos independente de plataforma e permitirá que você faça ssh para um Host remoto para buscar os dados.

http://ksar.atomique.net/

0
Greeblesnort

Não entrei em mais detalhes, mas collectl tem uma opção para gerar saída separada por delimitadores, portanto, no caso do gnuplot, você apenas gera seus dados com espaços e está tudo pronto. Ele até carregará bem no Excel. Se você quiser vírgulas, pode alterar o delimitador e se realmente quiser fazer a rota rrd (tome cuidado porque os gráficos não correspondem necessariamente aos dados!), Você pode alterar o delimitador para dois pontos e até mesmo alterar os carimbos de data/hora para UTC. -marca

0
Mark Seger

phpsysinfo não dá a você a capacidade de ver informações do processo de alguma forma?

0
djangofan