Como o tempo da CPU e o uso da CPU são os mesmos?

21

Na página da Wikipedia para o tempo de CPU , diz

The CPU time is measured in clock ticks or seconds. Often, it is useful to measure CPU time as a percentage of the CPU's capacity, which is called the CPU usage.

Não entendo como uma duração de tempo pode ser substituída por uma porcentagem. Quando olho para top , não é %CPU 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      

Pergunta

Para entender melhor o uso da CPU, como eu mesmo calculo o uso da CPU?

    
por Jasmine Lognnes 03.12.2014 / 01:27

2 respostas

32

O tempo de CPU é alocado em fatias de tempo discretas (ticks). Para um determinado número de fatias de tempo, a cpu está ocupada, outras vezes não é (o que é representado pelo processo ocioso). Na imagem abaixo, a CPU está ocupada por 6 das 10 fatias da CPU. 6/10 = 0,60 = 60% do tempo ocupado (e, portanto, haveria 40% de tempo ocioso).

Umapercentagemédefinidacomo"um número ou taxa que é expressa como um determinado número de partes de algo dividido em 100 partes". Portanto, nesse caso, essas partes são fatias discretas de tempo e as fatias de tempo do tipo algo são ocupadas versus fatias de tempo ocioso - a taxa de ocupação para fatias de tempo inativas.

Como as CPUs operam em GHz (bilionésimos de ciclos por segundo). O sistema operacional divide esse tempo em unidades menores chamadas de ticks. Eles não são realmente 1/10 de segundo. A taxa de cliques nas janelas é 10 milhões de ticks em um segundo e no Linux é sysconf(_SC_CLK_TCK) (normalmente 100 carrapatos por segundo).

Em algo como top , os ciclos de CPU ocupados são divididos em porcentagens de tempo do usuário e do sistema. Em top no Linux e perfmon no Windows, muitas vezes você terá um display que ultrapassa 100%, isto porque o total é 100% * the_number_of_cpu_cores.

Em um sistema operacional, é a tarefa do planejador para alocar essas fatias preciosas aos processos, de modo que o agendador é o que reporta isso.

    
por 03.12.2014 / 01:55
12

O tempo de CPU é o tempo que o processo está usando a CPU - convertendo-a em uma porcentagem é feita dividindo pela quantidade de tempo real que passou.

Portanto, se eu tiver um processo que use 1 segundo de tempo de CPU em um período de 2 segundos, ele usará 50% de CPU.

No caso do seu processo MATLAB, 217% indica que é usado 2,17 segundos de tempo de CPU por segundo durante o último intervalo de amostragem - efetivamente, monopolizando 2 núcleos de CPU e tirando um pouco de um terço.

    
por 03.12.2014 / 01:37