cálculo de uso de la CPU de la parte superior de comandos
-
23-08-2019 - |
Pregunta
Estoy tratando de usar GNU coreutil la fórmula de la parte superior para el cálculo de los usos de la CPU en porcentaje. Pero superior está utilizando algún half_total, para calcular el porcentaje, que es la adición de 0,5 al porcentaje.
En utils.c de la parte superior de fuente , la línea siguiente (al 3,8 beta1, es en número de línea: 459): -
* fuera ++ = (int) ((* diffs ++ * 1000 + half_total) / total_change);
Esto se traduce en: ((* Diffs ++ * 1000) / total_change) + 1/2 Por lo tanto, siempre da un número, que es: "10 veces el porcentaje, más 0,5". Así que si el porcentaje es x, volverá 10x + 0,5.
Puede alguien explicar cómo se calcula este promedio? o al menos algunos de puntero donde puedo conseguir la ayuda?
PS:
¿Por qué no podemos simplemente utilizar (*diffs++/total_change) * 100
para obtener el porcentaje requerido?
código fuente de Top se encuentra en: - http://downloads.sourceforge.net/unixtop /top-3.8beta1.tar.gz?modtime=1210117842&big_mirror=0
Solución
Esta es la manera de hacerlo redondeo para valores enteros, debido a que la división descarta la parte fraccionaria.
Cuando se agrega la mitad el divisor esto es equivalente a una división de coma flotante y redondeo al alza si la parte fraccionaria es de 0,5 o superior.