Monitorare l’uso delle risorse (CPU e RAM) su Linux
Come analizzare diversi problemi che possono mettere in difficoltà la gestione del tuo lavoro online
Quando la CPU è utilizzata da un processo in un sistema Linux non può essere disponibile per processare altre richieste. Tutti gli altri processi devono quindi aspettare che la CPU si liberi. In questa guida vi illustreremo come monitorare l’uso della CPU così da poter intervenire per sistemare eventuali problemi.
Table of Contents
Linux: come monitorare l’uso della CPU
Linux viene distribuito con numerose utility per effettuare questi report. Nel dettaglio vi spiegheremo come monitorare:
- l’uso della CPU
- l’uso di ogni singola CPU
- l’uso medio della CPU dall’ultimo reboot
- quali processi stanno usando la CPU
Comando “top”
Il comando “top” permette di determinare in tempo reale cosa succede sul sistema in esecuzione. Questo comando mostra la lista con le informazioni sui task che stanno venendo utilizzati dal kernel Linux.
Inoltre, esso monitora l’utilizzo della CPU, le statistiche dei processi e l’utilizzo della memoria.
La sezione superiore contiene informazioni sullo stato del sistema (uptime, carico medio, numero di processi in esecuzione, stato CPU ed uso di memoria e area di swap).
Il comando da digitare è:
$ top
E’ possibile vedere l’uso della CPU sotto la voce CPU.
Il task mostra la percentuale di tempo CPU usato dall’ultimo screen espressa come una percentuale del tempo totale della CPU.
Su sistemi multi CPU, il comando top, opererà su tutte le CPU.
Per chiudere la schermata è necessario premere il tasto q.
Il comando top produce una lista dei processi aggiornata.
Per default i processi sono ordinati per percentuale di processore usata e vengono mostrati solo i TOP (più importanti).
Inoltre viene mostrato quanta potenza processore e memoria è usata oltre a informazioni generali sul processo in esecuzione.
Monitorare l’Uso della CPU con mpstat e altri tools
Per utilizzare i seguenti comandi è necessario installare il pacchetto sysstat. Questo pacchetto include tool per monitorare le performance del sistema (Red Hat Linux / RHEL le hanno già di default).
Per installare eseguire il comando:
# apt-get install sysstat
se si usa RHEL usare il comando up2date come segue:
# up2date sysstat
Mostrare l’uso delle singole CPU usando mpstat
Se si usa un server con multiCPU, il comando mpstat permette di mostrare l’utilizzo di ogni CPU individualmente.
Questo mostrerà tutte le statistiche individualmente. Il comando va eseguito come segue:
# mpstat
Risultato:
Linux 2.6.15.4 (debian) Thursday 06 April 2006
05:13:05 IST CPU %user %nice %sys %iowait %irq %soft %steal %idle intr/s
05:13:05 IST all 16.52 0.00 2.87 1.09 0.07 0.02 0.00 79.42 830.06
Il comando mpstat mostra le attività per ogni processore disponibile.
Il processore 0 sarà il primo. Saranno inoltre riportate le attività globali di tutti i processori.
Il comando mpstat può essere usato sia su macchine con uno o più processori indifferentemente.
# mpstat -P ALL
Risultato:
Linux 2.6.15.4 (wwwportal1.xxxx.co.in) Thursday 06 April 2006
05:14:58 IST CPU %user %nice %sys %iowait %irq %soft %steal %idle intr/s
05:14:58 IST all 16.46 0.00 2.88 1.08 0.07 0.02 0.00 79.48 835.96
05:14:58 IST 0 16.46 0.00 2.88 1.08 0.07 0.02 0.00 79.48 835.96
05:14:58 IST 1 15.77 2.70 3.17 2.01 0.05 0.03 0.00 81.44 822.54
Esempio di risultato su un processore a 4 core:
Linux 2.6.5-7.252-smp (ora9.xxx.in) 04/07/06
07:44:18 CPU %user %nice %system %iowait %irq %soft %idle intr/s
07:44:18 all 3.01 57.31 0.36 0.13 0.01 0.00 39.19 1063.46
07:44:18 0 5.87 69.47 0.44 0.05 0.01 0.01 24.16 262.11
07:44:18 1 1.79 48.59 0.36 0.23 0.00 0.00 49.02 268.92
07:44:18 2 2.19 42.63 0.28 0.16 0.01 0.00 54.73 260.96
07:44:18 3 2.17 68.56 0.34 0.06 0.03 0.00 28.83 271.47
Report dell’utilizzo delle CPU nella giornata attuale
Per visualizzare l’uso della CPU nella giornata corrente si può usare il comando:
#sar
Risultato:
Linux 2.6.9-42.0.3.ELsmp (dellbox.xyz.co.in) 01/13/2007
12:00:02 AM CPU %user %nice %system %iowait %idle
12:10:01 AM all 1.05 0.00 0.28 0.04 98.64
12:20:01 AM all 0.74 0.00 0.34 0.38 98.54
12:30:02 AM all 1.09 0.00 0.28 0.10 98.53
12:40:01 AM all 0.76 0.00 0.21 0.03 99.00
12:50:01 AM all 1.25 0.00 0.32 0.03 98.40
01:00:01 AM all 0.80 0.00 0.24 0.03 98.92
…
…..
..
04:40:01 AM all 8.39 0.00 33.17 0.06 58.38
04:50:01 AM all 8.68 0.00 37.51 0.04 53.78
05:00:01 AM all 7.10 0.00 30.48 0.04 62.39
05:10:01 AM all 8.78 0.00 37.74 0.03 53.44
05:20:02 AM all 8.30 0.00 35.45 0.06 56.18
Average: all 3.09 0.00 9.14 0.09 87.68
E’ possibile inoltre comprare l’uso della CPU con il comando:
# sar -u 2 5
Risultato (misurato 5 volte per una durata di 2 secondi)
Linux 2.6.9-42.0.3.ELsmp (www1lab2.xyz.ac.in) 01/13/2007
05:33:24 AM CPU %user %nice %system %iowait %idle
05:33:26 AM all 9.50 0.00 49.00 0.00 41.50
05:33:28 AM all 16.79 0.00 74.69 0.00 8.52
05:33:30 AM all 17.21 0.00 80.30 0.00 2.49
05:33:32 AM all 16.75 0.00 81.00 0.00 2.25
05:33:34 AM all 14.29 0.00 72.43 0.00 13.28
Average: all 14.91 0.00 71.49 0.00 13.61
per una più chiara lettura:
- -u 2 5: report dell’uso della CPU. I valori riportati significano:
- %user: percentuale di uso della CPU per l’esecuzione di applicazioni (user level)
- %nice: percentuale di uso della CPU per l’esecuzione di applicazioni con priorità nice (user level)
- %system: percentuale di uso della CPU per l’esecuzione di del kernel
- %iowait: percentuale di tempo che la CPU o le CPU hanno aspettato le richieste I/O
- %idle: percentuale di tempo che la CPU o le CPU non hanno avuto richieste da I/O
Trovare i Task che occupano maggiormente la CPU
Per determinare quali processi monopolizzano o “consumano” la CPU si può usare il seguente comando:
# ps -eo pcpu,pid,user,args | sort -k 1 -r | head -10
Esso mostrerà i top 10 processi che utilizzano la CPU.
# ps -eo pcpu,pid,user,args | sort -r -k1 | less
Risultato:
%CPU PID USER COMMAND
96 2148 vivek /usr/lib/vmware/bin/vmware-vmx -C /var/lib/vmware/Virtual Machines/Ubuntu 64-bit/Ubuntu 64-bit.vmx -@ “”
0.7 3358 mysql /usr/libexec/mysqld –defaults-file=/etc/my.cnf –basedir=/usr –datadir=/var/lib/mysql –user=mysql –pid-file=/var/run/mysqld/mysqld.pid –skip-locking –socket=/var/lib/mysql/mysql.sock
0.4 29129 lighttpd /usr/bin/php
0.4 29128 lighttpd /usr/bin/php
0.4 29127 lighttpd /usr/bin/php
0.4 29126 lighttpd /usr/bin/php
0.2 2177 vivek [vmware-rtc]0.0 9 root [kacpid]0.0 8 root [khelper]
Ora sappiamo che il processo vmware-vmx consumano la maggior parte della CPU (96%).
Scegli un server Keliweb!
Per ottenere maggiori risorse e massime performance per la tua attività online scegli un server dedicato o un VPS Keliweb!
Potrai personalizzare ogni aspetto della tua macchina fisica o virtuale e beneficiare dell’esperienza, dell’affidabilità e dell’assistenza 24/7/365 del nostro team di specialisti.
Potrai scegliere inoltre se gestire il tuo server in autonomia o acquistare il nostro servizio Managed, delegando la gestione della tua macchina al nostro Team.
Potrai così concentrarti sullo sviluppo della tua attività mentre noi ci occuperemo della gestione e della manutenzione della tua macchina.
Visita ora il nostro sito web per scoprire tutte le nostre soluzioni e cercare quella perfetta per le tue necessità.
Posso sapere quale sia il comando per le piattaforme unix .ibm ,hp ,Sun per vedere i 10 processi che consumano più swap e più ram….grazue
Posso sapere il comando da usare per conoscere qual top 10 processi consumano swap e ram su unix piattaforma ibm, hp Sun e Sun Solaris. ..grazie