Performance Tuning sul sistema operativo

lunedì 3 dicembre 2007 alle 03:05 | Pubblicato su Performance Tuning | 3 commenti

La mia esperienza mi dice che per analizzare bene le prestazioni di un database server è meglio non prescindere da una visione dal lato del sistema operativo. Ciò che intendo dire che oltre a tutti i mezzi che mette a disposizione Oracle è utile osservare il carico del sistema utilizzando anche gli strumenti messi a disposizione dal sistema operativo.

Si tratta di un tema di cui ho già parlato in altri post, ho parlato degli strumenti messi a disposizione in Windows come ad esempio “Process Explorer”. In ambiente Unix invece vi sono comandi come “ps”, “top”, “vmstat”, “iostat”, “sar” che sono generici e presenti in tutte le varianti di Unix, compreso Linux. Poi alcuni produttori hanno introdotto programmi proprietari più sofisticati. Uno di questi che ho avuto modo di usare e che ho trovato fantastico è “topas” sotto AIX lo Unix di IBM.

Avendo un nostro cliente un database Oracle su AIX ho avuto modo di usare più volte topas è lo ho trovato molto utile in quanto da una panoramica completa del sistema, cpu, dischi, rete, ram ecc. ecc.

Volendo approfondirne meglio l’uso e capire come interpretare l’output di topas oggi ho fatto una piccola ricerca e sul sito di IBM ho trovato un’interessante sezione dedicata alla documentazione. Non è strutturata benissimo comunque sono giunto a due serie di articoli, una dedicata all’analisi delle prestazione dei dischi e una dedicata alla analisi delle prestazione della CPU. Come ho detto non mi sembra strutturata benissimo, pare che vi si acceda solo tramite motore di ricerca e non tramite un indice strutturato, quindi aggiungo questo link che fa da base di partenza.

Confesso di aver voluto scrivere questo post per due motivi, uno è il fatto di salvare i link che riporto sopra, l’altro e riportare il dubbio che mi è stato instillato in un recente incontro sul significato tempo di wait che viene riportato su topas, ma anche su top. Ho sempre ritenuto superficialmente si trattase di un tempo paragonabile a tempo di inattività della CPU in attesa del sistema di I/O, anche molti documenti su internet confermano questa mia interpretazione (ad esempio questo, anche un po’ vecchio) . Invece, in questo incontro mi è stato spiegato che il tempo di inattività della CPU è da considerarsi solo quello classificato come “idle”.

Dopo aver ricercato un po’ su internet documentazione al riguardo la mia perplessità rimane, tant’è che il primo sito su cui sono capitato è questo blog in cui l’autore spiega come addirittura in Solaris, a causa dell’algoritmo utilizzato per il calcolo dei tempi di utilizzazione della CPU il tempo di wait nel comando vmstat sia stato addirittura incluso nel tempo di inattività (idle) lasciando sempre a zero per compatibiltà il campo relativo al tempo di wait. Ovviamente per analizzare se un sistema è “CPU bound” o “I/O Bound” occorre fare delle analisi da più punti di vista, ma il punto è che un sistema in cui risultano tempi di wait elevati non si può propriamente parlare di CPU satura. Lancio quindi un appello a chi dovesse leggere questo post affinchè intervenga smentendo, confermando precisando ciò che ho detto magari suggerendo della documentazione che chiarisca meglio il concetto.

3 commenti »

RSS feed for comments on this post. TrackBack URI

  1. Il tempo di idle della CPU è un effettivo tempo di inattività ed è potenzialmente utilizzabile, il tempo di wait – che è wait per I/O – è un tempo insito nel meccanismo di attesa per I/O e non è perciò fruibile e quindi paragonabile all’idle.

  2. bene, questo più o meno conferma quello che era gia la mia cognizione del concetto. Anzi, secondo me evidenzia la sottile differenza, se la CPU è in wait significa che è inattiva perchè sta aspettando l’I/O ma non è in grado di fare altro; se la CPU è idle è completamente a disposizione ma nessun processo ne ha bisogno.

  3. Tutto giusto, però forse vale la pena di specificare che il tempo di wait di un’operazione I/O non è quello che va dall’inizio dell’operazione di I/O al suo completamento, perché naturalmente in quel periodo la CPU può essere riassegnata diverse volte a diversi processi, quindi è quello residuo in cui non si è riusciti a riallocare efficacemente la CPU


Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

Crea un sito o un blog gratuitamente presso WordPress.com.
Entries e commenti feeds.

%d blogger cliccano Mi Piace per questo: