Obter o uso máximo da CPU para um processo

1

É possível obter o pico de uso de um processo?

Ferramentas como 'top' e 'ps' parecem produzir o uso instantâneo da CPU. E 'pidstat' parece fazer a média ...

Mas alguém toma nota do pico?

    
por Fidel 12.12.2016 / 15:49

3 respostas

1

Acho que não há um arquivo que contenha essas informações por padrão.

Você precisa gravá-lo usando uma ferramenta de terceiros e fazer o cálculo.

Por exemplo, use um script como:

while true; do uptime >> uptime.log; sleep 1; done

Em seguida, faça algum processamento usando awk , por exemplo, e obtenha os dados desejados.

Isso lhe dará carga a cada minuto:

awk  '{print $1, substr($8, 1, length($8)-1)}' uptime.log

agora você pode obter seu uso máximo.

    
por 12.12.2016 / 16:24
1

Uma possível solução poderia estar usando ps como você sugeriu, um script de shell e agendar um cron.

O script de shell deve obter o uso atual da cpu do processo, compará-lo com o valor máximo anterior e, se for maior, atualizar o arquivo.

#!/bin/bash

CURRENT_VALUE='ps -p 3445 -o %cpu | sed -n '2p''
PREVIOUS_VALUE='sed -n '2p' max_cpu_usage_of_pid.sh.out'

if (( $(echo "$PREVIOUS_VALUE $CURRENT_VALUE" | awk '{print ($1 > $2)}') )); then
        ps -p 3445 -o %cpu > max_cpu_usage_of_pid.sh.out
fi
  • Nota 1: o arquivo max_cpu_usage_of_pid.sh.out deve existir
  • Nota 2: tive algumas dificuldades em comparar dois números decimais no script bash, isso resolveu

PS: Eu não sou realmente um especialista em scripts bash, qualquer melhora ou sugestão é bem-vinda:)

    
por 12.12.2016 / 16:46
1

A resposta curta seria que não há ou provavelmente não é o que você está procurando.

As estatísticas da CPU do processo são, na maioria das vezes, cumulativas. A cada instante, o sistema operacional decide quais processos devem ser executados usando o agendador de modo que, em qualquer ponto específico, se você o restringir ao menor valor de tempo, um processo usa 100% da CPU. Com vários núcleos, seu 1 / Nth dos processadores disponíveis.

A única maneira de obtê-lo é usar um tamanho de amostra mais longo e, em seguida, continuar observando os valores cumulativos. É assim que, de fato, o top funciona. Se o contador do usuário era 100 e agora é 150, agora sabemos que 50 jatos de CPU foram "consumidos" nesse período de tempo. Olhando para os contadores do sistema, podemos determinar o que é como uma porcentagem.

Assim, você pode fazer algo como executar o topo com um tempo de atualização baixo e no modo em lote. Isso pode lhe dar o que você precisa, mas eu me pergunto por que você precisa disso e vai responder a qualquer pergunta que você tenha do seu sistema.

    
por 15.12.2016 / 03:05

Tags