Come hai detto tu stesso, puoi premere Hper mostrare i thread degli utenti.
Solo per riferimento futuro (e per divertimento), calcoliamo l'utilizzo della CPU!
Un po 'di background:
In un moderno sistema operativo, c'è un Scheduler. Mira a garantire che tutti i processi e i relativi thread ottengano una buona dose di tempo di elaborazione. Non entrerò troppo nella programmazione (è davvero complicato). Ma alla fine c'è qualcosa chiamato coda di esecuzione . Qui è dove tutte le istruzioni di tutti i processi si allineano per attendere che venga eseguito il loro turno.
Qualsiasi processo inserisce le "attività" nella coda di esecuzione e, una volta che il processore è pronto, le espelle e le esegue. Quando un programma va in modalità di sospensione, ad esempio, si rimuove dalla coda di esecuzione e ritorna alla "fine della linea" una volta che è pronto per essere eseguito nuovamente.
L'ordinamento su questa coda ha a che fare con la priorità dei processi (anche chiamata "buon valore", ovvero un processo che funziona bene con le risorse di sistema).
La lunghezza della coda determina il carico del sistema. Un carico di 2,5, ad esempio, significa che ci sono 2,5 istruzioni per ogni istruzione che la CPU può gestire in tempo reale .
Su Linux, a proposito, questo carico viene calcolato a intervalli di 10 ms (per impostazione predefinita).
Ora sui valori percentuali di utilizzo della CPU:
Immagina di avere due orologi, uno viene chiamato t
e rappresenta il tempo reale . Misura un secondo per ogni secondo. L'altro orologio che chiamiamo c
. Funziona solo se è necessario eseguire l'elaborazione. Ciò significa che solo quando un processo calcola qualcosa viene eseguito l'orologio. Questo è anche chiamato tempo della CPU. Ogni processo sul sistema "ha" uno di quelli.
L'utilizzo del processore ora può essere calcolato per un singolo processo:
o per tutti i processi:
Su una macchina multi core, ciò può comportare naturalmente un valore di 3,9, poiché la CPU può calcolare quattro secondi di calcolo ogni secondo, se utilizzata perfettamente.
Wikipedia fornisce questo esempio:
Un'applicazione software in esecuzione su una macchina UNIX a 6 CPU crea tre processi UNIX per soddisfare i requisiti dell'utente. Ognuno di questi tre processi crea due thread. Il lavoro dell'applicazione software è distribuito uniformemente su 6 thread di esecuzione indipendenti creati per l'applicazione. Se non si prevede alcuna attesa per le risorse, il tempo totale della CPU dovrebbe essere sei volte il tempo reale trascorso.
Ecco un piccolo frammento di pitone che lo fa
>>> import time
>>> t = time.time()
>>> c = time.clock()
>>> # the next line will take a while to compute
>>> tuple(tuple(i**0.2 for i in range(600)) for i in range(6000))
>>> print (time.clock() / (time.time() - t)) * 100, "%"
66.9384021612 %
In un mondo perfetto, si potrebbe dedurre da ciò che il carico del sistema è 100 - 66,93 = 33,1%. (Ma in realtà sarebbe sbagliato a causa di cose complesse come l'attesa dell'I / O, la pianificazione delle inefficienze e così via)
Contrariamente al carico , questi calcoli comporteranno sempre un valore compreso tra 0 e il numero di processori, ovvero tra 0 e 1 o da 0 a 100%. Ora non c'è modo di distinguere tra una macchina che esegue tre attività, utilizzando il 100% di CPU, e una macchina che esegue un milione di attività, facendo a malapena qualsiasi lavoro fatto su una di esse, anche al 100%. Se, ad esempio, stai cercando di bilanciare un sacco di processi su molti computer, l'utilizzo della CPU è quasi inutile. Il carico è quello che vuoi lì.
Ora, in realtà, esiste più di uno di quegli orologi con tempi di elaborazione. Ce n'è uno per l'attesa dell'I / O, ad esempio. Quindi potresti anche calcolare l'utilizzo delle risorse I / O.
Questo potrebbe non essere stato utile per quanto riguarda la domanda originale, ma spero che sia interessante. :)