Solución 1:
El tiempo de CPU se asigna en discreto intervalos de tiempo (ticks). Durante un determinado número de intervalos de tiempo, la CPU está ocupada, otras veces no lo está (lo que se representa mediante el proceso inactivo). En la siguiente imagen, la CPU está ocupada durante 6 de los 10 segmentos de CPU. 6/10 =0,60 =60 % de tiempo ocupado (y por lo tanto habría un 40 % de tiempo de inactividad).
Un porcentaje se define como "un número o tasa que se expresa como un cierto número de partes de algo dividido en 100 partes". Entonces, en este caso, esas partes son porciones de tiempo discretas y el algo es porciones de tiempo ocupadas frente a porciones de tiempo inactivas:la tasa de porciones de tiempo ocupadas a inactivas.
Dado que las CPU operan en GHz (miles de millones de ciclos por segundo). El sistema operativo divide ese tiempo en unidades más pequeñas llamadas tics. No son realmente 1/10 de segundo. La tasa de ticks en Windows es de 10 millones de ticks por segundo y en Linux es sysconf(_SC_CLK_TCK)
(normalmente 100 tics por segundo).
En algo como top
, los ciclos de CPU ocupados se desglosan en porcentajes de cosas como el tiempo del usuario y el tiempo del sistema. En top
en Linux y perfmon en Windows, a menudo obtendrá una pantalla que supera el 100%, eso se debe a que el total es 100% * the_number_of_cpu_cores.
En un sistema operativo, es el programador trabajo para asignar estos preciosos segmentos a los procesos, por lo que el planificador es el que informa esto.
Solución 2:
El tiempo de CPU es el tiempo que el proceso usa la CPU; la conversión a un porcentaje se realiza dividiendo por la cantidad de tiempo real que ha pasado.
Entonces, si tengo un proceso que usa 1 segundo de tiempo de CPU durante un período de 2 segundos, está usando el 50 % de la CPU.
En el caso de su proceso de MATLAB, el 217 % indica que usó 2,17 segundos de tiempo de CPU por segundo durante el último intervalo de muestra; efectivamente, monopoliza 2 núcleos de CPU y toma parte de un tercio.