Como detectar o maior uso de CPU do processo durante sua vida

4

Eu escrevi algum teste multi-thread, e agora eu quero ter certeza que o maior uso de CPU deste teste é igual a 100 * CPU_NUMBER da máquina atual. É possível fazer?

UPD 0: estou falando sobre o sistema Linux.

    
por Grigorii Sokolik 13.09.2017 / 09:21

2 respostas

1

Acho que você está procurando por sar . SAR significa System Activty Report. É usado em sistemas operacionais semelhantes a unix para relatar sobre o uso de CPU, memória e IO, coletados por sysstat .

Em seguida, sysatat pode ser configurado para Monitore processos individuais. Link

Com que frequência ele é coletado e por quanto tempo o sar mantém relatórios é decidido na primeira configuração.

Você apenas deseja observar que essa coleta de dados não é "gratuita", por isso não a manteremos em servidores de produção.

Após a configuração, será fácil extrair os dados dos relatórios em seu script usando o comando sar , grep e awk .

Você não especificou em qual sistema operacional você está trabalhando, então eu encorajo você a pesquisar como configurar o sar / sysstat em sua distro.

    
por 13.09.2017 / 12:08
2

pidstat , que geralmente faz parte do pacote sysstat , pode monitorar um único ID de processo e imprimir estatísticas em cada um de seus segmentos. Por exemplo, para um navegador em execução no Chrome:

$ pidstat -t -p 27680 1
17:17:36   TGID    TID    %usr %system  %guest    %CPU CPU  Command
17:17:37  27680      -   13.00    3.00    0.00   16.00   0  chrome
17:17:37      -  27680    9.00    1.00    0.00   10.00   0  |__chrome
17:17:37      -  27712    2.00    1.00    0.00    3.00   1  |__Chrome_IOThread
17:17:37      -  27714    2.00    0.00    0.00    2.00   1  |__CompositorTileW

Este exemplo de 1 segundo tem muitos encadeamentos com 0% de CPU que removi. Eu entendo que 100% significa apenas 1 cpu totalmente ocupado. Há um sinalizador -I para dividir isso pelo número de CPUs.

    
por 13.09.2017 / 17:27