Na página da Wikipedia para o tempo de CPU , diz
O tempo da CPU é medido em tempos ou segundos. Freqüentemente, é útil medir o tempo da CPU como uma porcentagem da capacidade da CPU, chamada de uso da CPU.
Não entendo como uma duração de tempo pode ser substituída por uma porcentagem. Quando olho top
, não %CPU
me diz que MATLAB
está usando 2,17 dos meus núcleos?
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
18118 jasl 20 0 9248400 261528 78676 S 217.2 0.1 8:14.75 MATLAB
Questão
Para entender melhor o que é o uso da CPU, como eu próprio calculo o uso da CPU?
linux
performance
central-processing-unit
cpu-usage
Jasmine Lognnes
fonte
fonte
1
).Respostas:
O tempo da CPU é alocado em intervalos de tempo discretos (ticks). Por um certo número de intervalos de tempo, a CPU está ocupada, outras vezes não (o que é representado pelo processo inativo). Na figura abaixo, a CPU está ocupada por 6 das 10 fatias da CPU. 6/10 = 0,60 = 60% do tempo ocupado (e, portanto, haveria 40% do tempo ocioso).
Uma porcentagem é definida como "um número ou taxa que é expressa como um certo número de partes de algo dividido em 100 partes". Portanto, nesse caso, essas partes são fatias de tempo discretas e o algo é fatias de tempo ocupado versus fatias de tempo ocioso - a taxa de fatias de tempo ocupado para ocioso.
Como as CPUs operam em GHz (bilhões de ciclos por segundo). O sistema operacional divide esse tempo em unidades menores chamadas ticks. Eles não são realmente 1/10 de segundo. A taxa de ticks no Windows é de 10 milhões de ticks em um segundo e no Linux é
sysconf(_SC_CLK_TCK)
(geralmente 100 ticks por segundo).Em algo como
top
, os ciclos ocupados da CPU são divididos em porcentagens de coisas como tempo do usuário e tempo do sistema. Notop
Linux e perfmon no Windows, você geralmente obtém uma exibição que ultrapassa 100%, porque o total é 100% * o número_de_cores_cpu.Em um sistema operacional, é tarefa do agendador alocar essas fatias preciosas aos processos; portanto, o agendador é o que informa isso.
fonte
O tempo da CPU é o tempo em que o processo está usando a CPU - a conversão para uma porcentagem é feita pela divisão pela quantidade de tempo real que é passado.
Portanto, se eu tiver um processo que use 1 segundo do tempo da CPU por um período de 2 segundos, ele estará usando 50% da CPU.
No caso do seu processo MATLAB, 217% indica que ele usou 2,17 segundos de tempo de CPU por segundo no último intervalo de amostra - efetivamente, monopolizando 2 núcleos de CPU e ocupando um terço.
fonte