Tra le varie attività che un Amministratore di Sistema deve svolgere ogni giorno, c’è sicuramente quella della Manutenzione / gestione dei suoi server dedicati. Questo compito può risultare molto complesso visto le molteplici variabili in gioco e i vari fattori da tenere in considerazione. Nell’ambito web, solo con una certa esperienza si riesce ad avere un servizio decente e senza problemi. Per fortuna linux ci offre molti strumenti atti allo scopo, come il comando top che può aiutarci in questo complesso compito.
Oggi vorrei parlarvi di uno dei comandi che più aiutano nella gestione del vostro server, e che spesso risulta fondamentale per capirne eventuali problematiche in corso. Quando un amministratore di sistema deve analizzare una problematica sicuramente il primo comando che userà preso il controllo del proprio server è TOP. Grazie ad esso riusciamo a visualizzare sul display in “real time” i processi in esecuzione con i relativi di uso di CPU, memoria, tempo di esecuzione, etc…
Un esempio di output del comando TOP è questo:
Andiamo ora ad esaminare le varie informazioni che ci vengono visualizzate. Partendo da sinistra in alto notiamo che primo valore indicato è un orario, e più precisamente l’ora in cui è stato effettuato l’ultimo aggiornamento dei dati visualizzati sul display ( di default ogni 3s ).
A seguire sulla stessa riga si nota un parametro molto importante per capire lo “stato” del server che è il “load avarage“. Esso indica il carico computazionale del server in 3 metriche che sono: “istantanea” – “media 5 minuti” – “media 15 minuti”.
Tale valore non dovrebbe superare in nessun caso il il numero massimo di cpu installate sul server. ( es. in un server dual core il carico massimo non dovrebbe essere maggiore a 2.0 per lunghi periodi)
A seguire troviamo dalla seconda riga questi valori:
- Tasks: Numero processi attivi sul server, quanti sono in esecuzione, quanti in “sleeping”, stopped e Zombie. Solitamente questa riga è fondamentale per capire se il server e sovraccarico o se ci sono processi in fase di stallo che potrebbero compromettere il normale funzionamento del sistema operativo.
- CPU(s): indica l’uso attuale della singola CPU in percentuale (valore massimo visualizzato per 2 CPU = 200%, etc). Valori maggiori a 90 x (N° CPU) in un lungo periodo di attività potrebbero indicare un “allarme” che qualcosa non va o che l’HW del server non è più sufficiente.
- Vediamo in dettagli di altri parametri riferiti all’uso della CPU:
- %sy (system) : % di CPU utilizzata dai processi del Kernel.
- %ni (nice) : % di CPU utilizzata dai processi in “low priority”.
- %wa (iowait) : % di CPU utilizzata in attesa del Disco.
- %hi (irq hw) : % di CPU utilizzata in attesa degli Hardware Interrupts.
- %si (irq sw) : % di CPU utilizzata in attesa degli Hardware Interrupts.
- %st (stands for Stealth Time ) : % di CPU “precata” in attesa di un altro processo Virtuale o CPU utilizzata dalle macchine virtuali sull’hypervisor
- Mem: In questa riga troviamo tutte le informazioni necessarie per comprendere quanta memoria RAM sia installata sul nostro server (total), quanta utilizzata (used), libera (free) e in buffers.
- Swap: questa riga indica tutti i valori relativi alla memoria Virtuale Volatile creata direttamente su una partizione dell’Hard Disk. In generale, nella memoria di swap vengono memorizzati i dati che hanno minore probabilità di essere richiesti nel futuro, e in genere sono quelli meno recentemente utilizzati. L’uso eccessivo di memoria SWAP causa inevitabilmente un degrado di prestazioni del server stesso dovuto a una minore velocità attuale dei dischi rispetto alla RAM.
Ora che abbiamo capito come vengono visualizzate le informazioni “generali” del sistema passiamo ad analizzare le singole righe riferite ai processi per comprenderne i valori che il comando ci fornisce, nonchè come interpretarli. Piccola premessa, il programma di default visualizza sempre in alto i processi che utilizzano più CPU.
- PID: Indica il numero del processo. Molto utile in caso bisogna terminare “kill” il processo.
- USER: Indica il nome dell’utente di sistema che sta eseguendo il processo.
- PR: Priorità del processo con cui è stato lanciato
- NI: Valore che rappresenta il “NICE”
- VIRT: Memoria virtuale utilizzata dal processo.
- RES: Memoria fisica utilizzata dal processo.
- SHR: Memoria condivisa utilizzata del processo.
- S: Indica lo stato del processo che può essere: S = sleep – R = in esecuzione – Z = zombie – T = stopped
- %CPU: % di CPU utilizzata dal processo.
- %MEM: % di memoria del processo sul carico della RAM.
- TIME+: Indica da quanto tempo il processo è in esecuzione.
- COMMAND: Indica il nome del processo
Esistono varie opzioni del comando top che aiutano ad ottenere ancora più dettagli e informazioni, andrò ad elencare quelle più comuni e utilizzate:
- $ top – h | -v (help): Visualizza la versione del programma in uso.
- $ top -b (batch-mode): Utilizzato quando si vuole dare in output il risultato del comando top ad altri programmi.
- $ top -c (command-line): Utilizzato per avere a schermo informazioni maggiori sui processi e il path assoluto dello stesso.
- $ top -d (delay): Utile per specificare il tempo di refresh del comando a schermo.
- $ top -p (pid): Utile per monitorare il singolo processo partendo dal suo PID
- $ top -u (user): Visualizza solo i processi legati ad un determinato utente.
Questi sono solo alcuni esempi e l’uso delle varie opzioni può essere anche simultaneo
top -hv | -bcHisS -d delay -n limit -u|U user | -p pid -w [cols]
Il comando top accetta inoltre determinati comandi interattivi mentre è in esecuzione:
- <enter> o <spazio>: Effettua un refresh istantaneo del Display
- ? o h: Visualizza la documentazione del programma
- k: Utile per killare i processi tramite il suo PID
- d o s: cambio del display refresh
- Z: Personalizza i colori dell’output del comando
- r: Cambio Nice del processo tramite il suo PID
- W: Salva le modifiche effettuate alla configurazione / Display del programma.
- q: Esci dal programma
Consiglio sempre l’uso del comando man per avere maggiori informazioni sui processi, sul loro utilizzo e opzioni di funzionamento.
Ottima guida! Complimenti
Complimenti all’autore della guida. Un ottimo documento da leggere con attenzione.
Continuate a seguire il nostro blog, tante altre guide verranno proposte per dare una mano agli utenti del web a risolvere determinate problematiche e per dare alcuni consigli.