cálculo de utilização da CPU comando top
-
23-08-2019 - |
Pergunta
Eu estou tentando usar o GNU coreutil fórmula de topo para calcular usos de CPU em porcentagem. Mas top está usando algum half_total, para calcular a porcentagem, que é a adição de 0,5 à percentagem.
Em utils.c de de topo , a seguinte linha (em 3,8 beta1, é na linha número: 459): -
* fora ++ = (int) ((* Diffs ++ * 1000 + half_total) / total_change);
Isso se traduz em: ((* Diffs ++ * 1000) / total_change) + 1/2 Então, ele sempre dá um número, que é: "10 vezes a percentagem, mais de 0,5". Então, se o percentual é de x, ele retornará 10x + 0,5.
Alguém pode explicar como isso é média calculada? ou pelo menos alguns ponteiro onde posso obter a ajuda?
PS:
Por que não podemos apenas usar (*diffs++/total_change) * 100
para obter o percentual exigido?
código-fonte do Top está localizado em: - http://downloads.sourceforge.net/unixtop /top-3.8beta1.tar.gz?modtime=1210117842&big_mirror=0
Solução
Esta é a maneira de fazer arredondamento para valores inteiros, porque as devoluções de divisão a parte fracionária.
Quando você adiciona metade do divisor isso é equivalente a uma divisão de ponto flutuante e arredondando-se se a parte fracionária é de 0,5 ou superior.