Tutorial

Monitorare l’uso delle risorse (CPU e RAM) su Linux

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.

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

http/2

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

Monitorare l'uso della CPU su Linux

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, operererà  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

server dedicati

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 maggiormante 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%).

pec mail

Tags
Mostra altro

Ti potrebbe interessare anche

Lascia un commento