come documentato in proc(5), nel file /proc/(pid)/stat
si hanno i campi:
utime %lu
quantità di tempo che questo processo è stato programmato in modalità utente, misurati in orologio zecche (dividere per sysconf (_SC_CLK_TCK). Questo include ora ospite, ora_corsa (tempo trascorso in esecuzione una CPU virtuale, vedere di seguito), in modo che le applicazioni che sono non a conoscenza del campo ora ospite fare non perdere tale tempo dai loro calcoli .
stime %lu
quantità di tempo che questo processo è stato programmato in modalità kernel , misurata in clock ticks (divisione da sysconf (_SC_CLK_TCK).
Per ottenere l'utilizzo della CPU per un processo specifico, utilizzare questi campi.Il processo di alto livello aggregherà l'utilizzo della CPU su tutti i thread, per una ripartizione per thread, è possibile trovare gli altri thread in /proc/(pid)/task
.
Se si preferisce essere avvisati quando C Il tempo PU supera qualche soglia, è possibile utilizzare clock_getcpuclockid per ottenere un handle per il relativo orologio della CPU, quindi timer_create o timerfd per ricevere una notifica quando raggiunge un livello specificato. Tuttavia, si noti che i timer cputime cross-process sono una caratteristica opzionale nelle specifiche POSIX e potrebbero non essere supportati (non ho testato).
Il carico è una metrica a livello di sistema, non di processo. Intendevi l'utilizzo della CPU di processo? –
sei sicuro che le informazioni non ci sono? 'find/proc/1' ad esempio, ci sono MOLTE cose, hai passato tutto? –
Ho fatto tutto questo :) – Mark