Re: interpretare output di top
On Monday 01 October 2007 09:03, Lucio Crusca wrote:
> La CPU risulta occupata per il 23.8% da processi userspace, ma facendo
> la somma dell'occupazione dei processi elencati si raggiunge appena il
> 5%. Chi sta usando il restante 18.8%?
Purtroppo non è così semplice. 'Top' aggiorna i dati a intervalli
regolari, ad esempio 3 o 5 secondi, usando le informazioni che il kernel
mette a disposizione nel filesystem /proc.
Questi intervalli di tempo, per quanto brevi, sono piuttosto lunghi per il
kernel. Sommariamente si può dire che: il kernel misura il tempo in
multipli di intervalli piccolissimi chiamati "jiffies"; quando si compila
il kernel, a seconda dell'uso a cui è destinato, si può cambiare il valore
di una variabile che decide quanti di questi jiffies al secondo ci
saranno; nel caso di Linux essi sono 100, oppure 250 oppure 1000.
Un qualsiasi processo in esecuzione sarà eseguito in parte in modalità
utente e in parte in modalità kernel (ad esempio quando il processo fa una
chiamata di sistema per accedere a file, ecc.). Le informazioni relative
al tempo di CPU di un processo in termini di jiffies sono contenute nel
file "/proc/PID/stat", dove PID indica il numero che identifica il
processo: il campo 14 e 15 indicano rispettivamente "utime", cioè quanti
jiffies in modo utente, e "stime" cioè quanti in modo kernel.
Ad esempio per il processo 1 (init):
# cat /proc/1/stat | awk '{ print $14, $15;}'
0 48
#
48 jiffies su questo sistema sono 0.192 secondi. Così pochi che 'ps',
approssimando, dichiara lo 0.0%.
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.1 1948 652 ? Ss 08:45 0:00 init [2]
Il valore "%CPU" qui corrisponde al rapporto tra tempo di cpu impiegato e
tempo di esecuzione del processo. Come si legge nella pagina man
di 'ps': "è piuttosto improbabile che la somma delle percentuali di
utilizzo della CPU corrisponda esattamente al 100%".
Saluti.
alfredo
Reply to: