Soluzione 1:
Il tempo della CPU è allocato in discreto intervalli di tempo (tick). Per un certo numero di time slice la CPU è occupata, altre volte no (che è rappresentata dal processo inattivo). Nell'immagine sotto la CPU è occupata per 6 delle 10 CPU slice. 6/10 =0,60 =60% del tempo occupato (e ci sarebbe quindi il 40% di tempo di inattività).
Una percentuale è definito come "un numero o tasso espresso come un certo numero di parti di qualcosa diviso in 100 parti". Quindi, in questo caso, quelle parti sono intervalli di tempo discreti e il qualcosa è intervalli di tempo occupati rispetto a intervalli di tempo di inattività -- la frequenza tra intervalli di tempo occupati e inattivi.
Poiché le CPU operano in GHz (miliardi di cicli al secondo). Il sistema operativo suddivide quel tempo in unità più piccole chiamate tick. Non sono davvero 1/10 di secondo. Il tick rate in Windows è di 10 milioni di tick al secondo e in Linux è sysconf(_SC_CLK_TCK)
(di solito 100 tick al secondo).
In qualcosa come top
, i cicli occupati della CPU vengono quindi ulteriormente suddivisi in percentuali di cose come il tempo dell'utente e il tempo del sistema. In top
su Linux e perfmon su Windows, spesso otterrai un display che supera il 100%, questo perché il totale è 100% * the_number_of_cpu_cores.
In un sistema operativo, è lo programmatore job per allocare queste preziose fette ai processi, quindi lo scheduler è ciò che segnala questo.
Soluzione 2:
Il tempo della CPU è il tempo in cui il processo utilizza la CPU:la conversione in percentuale viene eseguita dividendo per la quantità di tempo reale trascorso.
Quindi, se ho un processo che utilizza 1 secondo di tempo della CPU in un periodo di 2 secondi, utilizza il 50% di una CPU.
Nel caso del tuo processo MATLAB, il 217% indica che sono stati utilizzati 2,17 secondi di tempo della CPU al secondo nell'ultimo intervallo di campionamento, monopolizzando in effetti 2 core della CPU e prendendone un terzo.