Il controllo della larghezza di banda e l'impiego della CPU sotto Red Hat Enterprise Linux, comporta l'uso dei tool affrontati nel Capitolo 2; quindi, se non avete ancora letto il capitolo in questione, fatelo prima di continuare.
3.3.1. Controllo della larghezza di banda su Red Hat Enterprise Linux
Come accennato nella Sezione 2.4.2, � difficile controllare direttamente l'utilizzo della larghezza di banda. Tuttavia, esaminando le statistiche inerenti il livello del dispossitivo, � possibile in modo approsssimato sapere se l'insufficienza della larghezza di banda rappresenti un problema per il vostro sistema.
Con vmstat � possibile determinare se l'attivit� generale del dispositivo � eccessiva, controllando i campi bi e bo, in aggiunta, prendendo nota dei campi si e so, � possibile ottenere maggiori informazioni sull'attivit� del disco causata dallo swap I/O:
procs memory swap io system cpu
r b w swpd free buff cache si so bi bo in cs us sy id
1 0 0 0 248088 158636 480804 0 0 2 6 120 120 10 3 87
|
In questo esempio, il campo bi mostra due blocchi/secondo scritti sui dispositivi a blocco (principalmente sulle unit� disco), mentre il campo bo mostra sei blocchi/secondo letti dai dispositivi a blocco. Possiamo determinare che nessuna di queste attivit� � stata causata dal processo di swap, in quanto i campi si e so mostrano entrambi una velocit� relativa allo swap I/O pari a 0 kilobytes/secondo.
Utilizzando iostat, � possibile ottenere maggiori informazioni sull'attivit� relativa al disco:
Linux 2.4.21-1.1931.2.349.2.2.entsmp (raptor.example.com) 07/21/2003
avg-cpu: %user %nice %sys %idle
5.34 4.60 2.83 87.24
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
dev8-0 1.10 6.21 25.08 961342 3881610
dev8-1 0.00 0.00 0.00 16 0
|
Questo output mostra che il dispositivo con il numero 8 (in questo caso /dev/sda, il primo disco SCSI) ha una media leggermente maggiore ad una operazione I/O al secondo (il campo tsp). La maggior parte dell'attivit� I/O per questo dispositivo � stata scritta (il campo Blk_wrtn) con una velocit� di poco superiore a 25 blocchi al secondo (il campo Blk_wrtn/s).
Se avete bisogno di maggiori informazioni, utilizzate l'opzione -x di iostat:
Linux 2.4.21-1.1931.2.349.2.2.entsmp (raptor.example.com) 07/21/2003
avg-cpu: %user %nice %sys %idle
5.37 4.54 2.81 87.27
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s rkB/s wkB/s avgrq-sz
/dev/sda 13.57 2.86 0.36 0.77 32.20 29.05 16.10 14.53 54.52
/dev/sda1 0.17 0.00 0.00 0.00 0.34 0.00 0.17 0.00 133.40
/dev/sda2 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 11.56
/dev/sda3 0.31 2.11 0.29 0.62 4.74 21.80 2.37 10.90 29.42
/dev/sda4 0.09 0.75 0.04 0.15 1.06 7.24 0.53 3.62 43.01
|
La prima cosa da ricordare � che l'output iostat mostra ora delle statistiche suddivise in livelli. Utilizzando df per associare i mount point ai nomi del dispositivo, � possibile usare questo rapporto per determinare se, per esempio, la partizione che contiene /home/ presenta un carico di lavoro eccessivo.
Ogni output proveniente da iostat -x � lungo e contiene pi� informazioni rispetto a questo; ecco il remainder di ogni riga (con l'aggiunta di una colonna per facilitarne la lettura):
Device: avgqu-sz await svctm %util
/dev/sda 0.24 20.86 3.80 0.43
/dev/sda1 0.00 141.18 122.73 0.03
/dev/sda2 0.00 6.00 6.00 0.00
/dev/sda3 0.12 12.84 2.68 0.24
/dev/sda4 0.11 57.47 8.94 0.17
|
In questo esempio, � interessante notare che /dev/sda2 � la partizione di swap del sistema; � evidente dai molteplici campi che presentano 0.00 per questa partizione, che lo swapping non rappresenta un problema su questo sistema.
Un altro punto molto interessante da notare � /dev/sda1. Le statistiche per questa partizione sono molto inusuali; l'attivit� generale sembrerebbe bassa, ma per quale motivo la misura media della richiesta I/O (il campo avgrq-sz), il tempo medio d'attesa (il campo await), ed il tempo medio di servizio (il campo svctm) sono pi� grandi delle altre partizioni? La risposta � che questa partizione contiene la directory /boot/, la quale rappresenta il luogo dove viene conservata la ramdisk iniziale ed il kernel. Quando il sistema esegue l'avvio, gli I/O di lettura (da notare che solo i campi rsec/s e rkB/s non presentano il valore zero; qui non viene eseguita alcuna procedura di scrittura) usati durante il processo d'avvio sono per un alto numero di blocchi, risultando cos� in un'attesa relativamente lunga ed in visualizzazioni iostat dei tempi di servizio.
� possibile utilizzare sar per una panoramica pi� duratura delle statistiche I/O; per esempio, sar -b visualizza un rapporto generale di I/O:
Linux 2.4.21-1.1931.2.349.2.2.entsmp (raptor.example.com) 07/21/2003
12:00:00 AM tps rtps wtps bread/s bwrtn/s
12:10:00 AM 0.51 0.01 0.50 0.25 14.32
12:20:01 AM 0.48 0.00 0.48 0.00 13.32
…
06:00:02 PM 1.24 0.00 1.24 0.01 36.23
Average: 1.11 0.31 0.80 68.14 34.79
|
Le statistiche, come il display iniziale di iostat, sono raggruppate per tutti i dispositivi a blocco.
Un altro rapporto relativo a I/O viene riprodotto utilizzando sar -d:
Linux 2.4.21-1.1931.2.349.2.2.entsmp (raptor.example.com) 07/21/2003
12:00:00 AM DEV tps sect/s
12:10:00 AM dev8-0 0.51 14.57
12:10:00 AM dev8-1 0.00 0.00
12:20:01 AM dev8-0 0.48 13.32
12:20:01 AM dev8-1 0.00 0.00
…
06:00:02 PM dev8-0 1.24 36.25
06:00:02 PM dev8-1 0.00 0.00
Average: dev8-0 1.11 102.93
Average: dev8-1 0.00 0.00
|
Questo rapporto fornisce informazioni per ogni dispositivo, ma con pochi dettagli.
Anche se non vi sono delle statistiche precise in grado di mostrare l'utilizzo della larghezza di banda o del datapath, noi possiamo determinare almeno il comportamento del dispositivo e usare la loro attivit� per determinare indirettamente il carico del bus.
3.3.2. Controllo dell'utilizzo della CPU su Red Hat Enterprise Linux
A differenza della larghezza di banda, il controllo dell'utilizzo della CPU � molto pi� semplice. Da una percentuale singola di utilizzo della CPU in GNOME System Monitor, alle statistiche pi� dettagliate riportate da sar, � possibile determinare in modo pi� accurato la quantit� di potenza della CPU consumata e da chi.
Andando oltre GNOME System Monitor, top rappresenta il primo tool di controllo delle risorse nel Capitolo 2 in grado di fornire una rappresentazione pi� dettagliata sull'uso della CPU. Ecco un rapporto top di una workstation dual-processor:
9:44pm up 2 days, 2 min, 1 user, load average: 0.14, 0.12, 0.09
90 processes: 82 sleeping, 1 running, 7 zombie, 0 stopped
CPU0 states: 0.4% user, 1.1% system, 0.0% nice, 97.4% idle
CPU1 states: 0.5% user, 1.3% system, 0.0% nice, 97.1% idle
Mem: 1288720K av, 1056260K used, 232460K free, 0K shrd, 145644K buff
Swap: 522104K av, 0K used, 522104K free 469764K cached
PID USER PRI NI SIZE RSS SHARE STAT %CPU %MEM TIME COMMAND
30997 ed 16 0 1100 1100 840 R 1.7 0.0 0:00 top
1120 root 5 -10 249M 174M 71508 S < 0.9 13.8 254:59 X
1260 ed 15 0 54408 53M 6864 S 0.7 4.2 12:09 gnome-terminal
888 root 15 0 2428 2428 1796 S 0.1 0.1 0:06 sendmail
1264 ed 15 0 16336 15M 9480 S 0.1 1.2 1:58 rhn-applet-gui
1 root 15 0 476 476 424 S 0.0 0.0 0:05 init
2 root 0K 0 0 0 0 SW 0.0 0.0 0:00 migration_CPU0
3 root 0K 0 0 0 0 SW 0.0 0.0 0:00 migration_CPU1
4 root 15 0 0 0 0 SW 0.0 0.0 0:01 keventd
5 root 34 19 0 0 0 SWN 0.0 0.0 0:00 ksoftirqd_CPU0
6 root 34 19 0 0 0 SWN 0.0 0.0 0:00 ksoftirqd_CPU1
7 root 15 0 0 0 0 SW 0.0 0.0 0:05 kswapd
8 root 15 0 0 0 0 SW 0.0 0.0 0:00 bdflush
9 root 15 0 0 0 0 SW 0.0 0.0 0:01 kupdated
10 root 25 0 0 0 0 SW 0.0 0.0 0:00 mdrecoveryd
|
Le prime informazioni riguardanti la CPU vengono visualizzate sulla prima riga: il carico medio. Il carico medio � un numero che corrisponde al numero medio di processi eseguibili sul sistema. Il carico medio viene spesso elencato attraverso un insieme di tre numeri (come fatto da top), i quali rappresentano il carico medio nei precedenti 1, 5 e 15 minuti, indicando che il sistema in questo esempio, non era molto occupato.
La riga successiva, anche se non strettamente legata all'utilizzo della CPU, ha una relazione indiretta, in quanto mostra il numero di processi eseguibili (qui, solo uno -- ricordate questo numero, in quanto rappresenta qualcosa di speciale in questo esempio). Il numero di processi eseguibili � un buon indicatore di come potrebbe essere il legame tra la CPU ed il sistema.
Successivamente si possono notare due righe che mostrano l'utilizzo corrente dei due CPU nel sistema. Le statistiche inerenti l'utilizzo mostrano il consumo dei cicli CPU, e se lo stesso sia dovuto alla processazione user-level o system-level; viene altres� inclusa una statistica che mostra la quantit� di tempo CPU consumato dai processi che presentano uno scheduling di priorit� modificato. Per finire, vi � anche una statistica riguardante il tempo in posizione idle.
Procedendo nella sezione relativa al processo, possiamo trovare che il processo che utilizza maggiormente la potenza CPU � proprio top; in altre parole, l'unico processo eseguibile era top ed era intento ad eseguire una "foto" di se stesso.
| Suggerimento |
---|
| � importante ricordare che l'atto di esecuzione di un monitor del sistema, influenza le statistiche sull'utilizzo della risorsa che ricevete. Tutti i monitor basati sul software, in alcuni casi, non sono esenti da quanto sopra indicato. |
Per ottenere una conoscenza pi� dettagliata sull'utilizzo della CPU, � necessario cambiare i tool. Se esaminiamo l'output di vmstat, possiamo avere una concezione leggermente diversa sul nostro sistema:
procs memory swap io system cpu
r b w swpd free buff cache si so bi bo in cs us sy id
1 0 0 0 233276 146636 469808 0 0 7 7 14 27 10 3 87
0 0 0 0 233276 146636 469808 0 0 0 0 523 138 3 0 96
0 0 0 0 233276 146636 469808 0 0 0 0 557 385 2 1 97
0 0 0 0 233276 146636 469808 0 0 0 0 544 343 2 0 97
0 0 0 0 233276 146636 469808 0 0 0 0 517 89 2 0 98
0 0 0 0 233276 146636 469808 0 0 0 32 518 102 2 0 98
0 0 0 0 233276 146636 469808 0 0 0 0 516 91 2 1 98
0 0 0 0 233276 146636 469808 0 0 0 0 516 72 2 0 98
0 0 0 0 233276 146636 469808 0 0 0 0 516 88 2 0 97
0 0 0 0 233276 146636 469808 0 0 0 0 516 81 2 0 97
|
In questo caso abbiamo usato il comando vmstat 1 10 per controllare il sistema ogni secondo per dieci volte. Le statistiche relative alla CPU (i campi us, sy, e id) sembrano simili a quelle mostrate da top, e addirittura possono apparire anche meno dettagliate. Tuttavia, a differenza di top, possiamo anche ottenere alcune informazioni su come � stata usata la CPU.
Se esaminiamo i campi system possiamo notare che la CPU in media, gestisce 500 interruzioni al secondo e si smista tra i processi da 80 a 400 volte al secondo. Se vi pare che essa sia un'attivit� intensa, ricredetevi, in quanto la processazione user-level (il campo us) si comporta solo al 2%, mentre la processazione system-level (il campo sy) � generalmente sotto l'1%. Ancora, questo rappresenta un sistema idle.
Ricontrollando ci� che offrono i tool Sysstat, possiamo dire che iostat e mpstat forniscono poche informazioni aggiuntive a confronto di ci� che � stato ottenuto con top e vmstat. Tuttavia, sar produce un numero di rapporti che possono essere utili durante il controllo della CPU.
Il primo rapporto viene ottenuto dal comando sar -q, il quale visualizza la lunghezza della coda di esecuzione, il numero totale dei processi, ed il carico medio inerenti ad uno e cinque minuti. Ecco un esempio:
Linux 2.4.21-1.1931.2.349.2.2.entsmp (falcon.example.com) 07/21/2003
12:00:01 AM runq-sz plist-sz ldavg-1 ldavg-5
12:10:00 AM 3 122 0.07 0.28
12:20:01 AM 5 123 0.00 0.03
…
09:50:00 AM 5 124 0.67 0.65
Average: 4 123 0.26 0.26
|
In questo esempio, il sistema � sempre occupato (se consideriamo che � possibile eseguire pi� di un processo in ogni determinato momento), ma non � sovraccarico (grazie al fatto che questo sistema possiede pi� di un processore).
Il prossimo rapporto sar relativo alla CPU viene fornito dal comando sar -u:
Linux 2.4.21-1.1931.2.349.2.2.entsmp (falcon.example.com) 07/21/2003
12:00:01 AM CPU %user %nice %system %idle
12:10:00 AM all 3.69 20.10 1.06 75.15
12:20:01 AM all 1.73 0.22 0.80 97.25
…
10:00:00 AM all 35.17 0.83 1.06 62.93
Average: all 7.47 4.85 3.87 83.81
|
Le statistiche contenute in questo rapporto non variano rispetto a quelle fornite da molti altri tool. Il beneficio pi� grande � che sar � in grado di rendere i dati continuamente disponibili, e quindi, si mostra pi� utile per ottenere delle medie valide pi� a lungo, oppure potrebbe risultare utile per la produzione di grafici sull'utilizzo della CPU.
Su sistemi con processori multipli, il comando sar -U pu� fornire statistiche per un unico o per tutti i processori. Ecco un esempio di output di sar -U ALL:
Linux 2.4.21-1.1931.2.349.2.2.entsmp (falcon.example.com) 07/21/2003
12:00:01 AM CPU %user %nice %system %idle
12:10:00 AM 0 3.46 21.47 1.09 73.98
12:10:00 AM 1 3.91 18.73 1.03 76.33
12:20:01 AM 0 1.63 0.25 0.78 97.34
12:20:01 AM 1 1.82 0.20 0.81 97.17
…
10:00:00 AM 0 39.12 0.75 1.04 59.09
10:00:00 AM 1 31.22 0.92 1.09 66.77
Average: 0 7.61 4.91 3.86 83.61
Average: 1 7.33 4.78 3.88 84.02
|
Il comando sar -w riporta il numero di cambiamenti del contesto al secondo, rendendo possibile ottenere informazioni aggiuntive su dove siano stati usati i cilci CPU:
Linux 2.4.21-1.1931.2.349.2.2.entsmp (falcon.example.com) 07/21/2003
12:00:01 AM cswch/s
12:10:00 AM 537.97
12:20:01 AM 339.43
…
10:10:00 AM 319.42
Average: 1158.25
|
� anche possibile fornire due diversi rapporti sar sull'attivit� d'interruzione. Il primo, (riprodotto usando il comando sar -I SUM) visualizza una singola statistica inerente "le interruzioni al secondo":
Linux 2.4.21-1.1931.2.349.2.2.entsmp (falcon.example.com) 07/21/2003
12:00:01 AM INTR intr/s
12:10:00 AM sum 539.15
12:20:01 AM sum 539.49
…
10:40:01 AM sum 539.10
Average: sum 541.00
|
Utilizzando il comando sar -I PROC, � possibile suddividere l'attivit� d'interruzione a seconda del processore (su sistemi con processori multipli) e tramite il livello d'interruzione (da 0 a 15):
Linux 2.4.21-1.1931.2.349.2.2.entsmp (pigdog.example.com) 07/21/2003
12:00:00 AM CPU i000/s i001/s i002/s i008/s i009/s i011/s i012/s
12:10:01 AM 0 512.01 0.00 0.00 0.00 3.44 0.00 0.00
12:10:01 AM CPU i000/s i001/s i002/s i008/s i009/s i011/s i012/s
12:20:01 AM 0 512.00 0.00 0.00 0.00 3.73 0.00 0.00
…
10:30:01 AM CPU i000/s i001/s i002/s i003/s i008/s i009/s i010/s
10:40:02 AM 0 512.00 1.67 0.00 0.00 0.00 15.08 0.00
Average: 0 512.00 0.42 0.00 N/A 0.00 6.03 N/A
|
Questo rapporto (il quale � stato troncato in modo da rientrare in una unica pagina), include una colonna per ogni livello d'interruzione (per esempio, il campo i002/s riporta la velocit� per il livello d'interruzione 2). Se si fosse trattato di un sistema a processore multiplo, dovrebbe essere riportata una riga per periodo per ogni CPU.
Un altro punto molto importatnte da ricordare su questo rapporto, � che sar � in grado di aggiungere o rimuovere dei campi d'interruzione, se nessun dato viene raccolto per un campo specifico. Il rapporto sopra riportato fornisce un esempio di quanto detto, la fine dello stesso include i livelli d'interruzione (3 e 10), non presenti all'inizio del periodo.
| Nota Bene |
---|
| Vi sono altri due rapporti sar relativi all'interruzione — sar -I ALL e sar -I XALL. Tuttavia, la configurazione di default per la utility per la raccolta dei dati sadc, non raccoglie le informazioni necessarie per questi rapporti. Tutto questo pu� essere cambiato modificando il file /etc/cron.d/sysstat, e modificando questa riga: */10 * * * * root /usr/lib/sa/sa1 1 1
|
in questo modo: */10 * * * * root /usr/lib/sa/sa1 -I 1 1
|
Ricordatevi che questa modifica causa una raccolta aggiuntiva di informazioni da parte di sadc, risultando in misure pi� grandi del data file. Per questo motivo, assicuratevi che la configurazione del vostro sistema sia in grado di supportare un consumo aggiuntivo dello spazio. |