Como coletar periodicamente contadores de desempenho de hardware no linux?

3

Estou tentando monitorar vários contadores de desempenho de hardware de um sistema em execução; no entanto, parece que a ferramenta PMC atual, por exemplo, A ferramenta oprofile ou perf pode apenas gravar contadores depois de terminado o programa, e. ~>perf record <command>;

~>perf report

o registro perf retorna somente depois que o programa alvo termina, eu gostaria de coletar periodicamente esses contadores como o que o vmstat faz.

Editar: quero coletar contadores de desempenho de hardware , por exemplo, erros de cache, instruções, erros de ramificação, esses contadores estão disponíveis no processo moderno.

    
por IZhen 13.12.2010 / 13:10

4 respostas

2

Parece que o atual perf não é compatível com a saída do estilo Sar. No entanto, uma emulação muito próxima é possível com a ajuda do comando watch.

Para coletar contadores periodicamente para todo o sistema, use a opção '-a'. Abaixo está um exemplo de relatórios dos contadores gerais de desempenho de hardware para cada 60 segundos

watch -n 60 sudo perf stat -a sleep 60

Dá a saída como

Every 10.0s: sudo perf stat -a sleep 10                                                                                               Wed May 11 11:19:36 2011


 Performance counter stats for 'sleep 10':

       19956.091380  task-clock-msecs         #      1.995 CPUs
              26802  context-switches         #      0.001 M/sec
               1871  CPU-migrations           #      0.000 M/sec
                951  page-faults              #      0.000 M/sec
         4582605668  cycles                   #    229.634 M/sec  (scaled from 69.93%)
         1993617795  instructions             #      0.435 IPC    (scaled from 81.07%)
          374028141  branches                 #     18.743 M/sec  (scaled from 81.34%)
           19071123  branch-misses            #      5.099 %      (scaled from 79.77%)
          100724660  cache-references         #      5.047 M/sec  (scaled from 18.66%)
            5461106  cache-misses             #      0.274 M/sec  (scaled from 20.23%)

       10.001116547  seconds time elapsed

O uso do comando sleep é um pouco intuitivo à primeira vista. Aqui o perf stat NÃO irá coletar contadores específicos para o comando sleep, ao invés disso, o comando sleep simplesmente age como uma maneira de dizer ao stat perf a duração da coleção (eu percebo que a partir do exemplo no perf wiki ) Nota para coletar contadores do sistema, é necessário privilégio administrativo, portanto o sudo antes do status de desempenho é necessário.

Se você simplesmente precisar coletar contadores específicos para um processo em execução (por exemplo, com pid 2785), um comando de amostra é

watch -n 60 perf stat -p 2785 sleep 60

Note que desta vez, o sudo NÃO é necessário.

    
por 11.05.2011 / 05:28
0

Eu acho que o sar é uma maneira simples para minhas necessidades de monitoramento de um sistema Linux. Ele periodicamente coleta estatísticas sobre muitas coisas e você pode fazer com que o cron lhe envie e-mails periodicamente com uma tabela de resultados que você pode processar.

Se você precisar monitorar mais sistemas, ou quiser gráficos ou alertas sofisticados, pode procurar algo como cactos ou nagios .

    
por 13.12.2010 / 13:14
0

não se esqueça do collectl. coleta muito mais dados e sua saída é muito mais fácil de ler do que o sar. Se você usar o sar, faça um GRANDE favor e ajuste o intervalo de monitoramento para 10 segundos, em vez de 10 minutos - apenas problemas brutos reais aparecerão em uma taxa tão grossa quanto 10 minutos. -mark

    
por 13.12.2010 / 16:51
0

Se você deseja registrar dados realmente abrangentes, use o Performance Co-Pilot. Há uma boa interface gráfica também.

    
por 13.12.2010 / 16:53