Per garantire l'efficienza e l'affidabilità di un sistema, sia in ambiente virtuale, sia negli ambienti tradizionali, è necessario monitorare le prestazioni di tutte le parti che compongono l’infrastruttura: server fisici, macchine virtuali, storage, rete. In linea generale, le prestazioni indicano il grado di rapidità con cui si completano le attività di sistema e delle applicazioni, rapidità che potrebbe essere frenata da un lento accesso allo storage, da un’insufficiente potenza di calcolo, da un’insufficiente quantità di memoria disponibile per le VM, oppure dalla velocità effettiva delle interfacce di rete. Il monitoraggio permette di ottimizzare o mantenere efficiente un sistema.



Monitorare i sistemi guest

Per il monitoraggio delle prestazioni nei sistemi operativi guest, oltre agli strumenti di analisi forniti dagli stessi sistemi (su Windows, ad esempio, si utilizza Task Manager per il controllo di CPU e memoria), esistono strumenti di terze parti e funzionalità integrate nei VMware Tools. Per quanto riguarda gli strumenti di terze parti, segnaliamo Iometer, utile strumento per l’analisi delle richieste I/O sui dischi, disponibile sotto forma di immagine ISO avviabile, da montare su una VM. Per quanto riguarda i VMware Tools, essi includono una libreria di funzioni chiamata Perfmon DLL, che consente l’accesso alle statistiche generate da CPU e memoria all’interno delle VM. Sui sistemi Windows, la libreria Perfmon DLL può essere sfruttata dallo strumento di analisi delle prestazioni Performance Monitor. È possibile utilizzare Performance Monitor di Windows per esaminare l'effetto sulle prestazioni di una VM prodotto dai programmi in esecuzione, sia in tempo reale e sia raccogliendo i dati di registro per un'analisi successiva.

Analisi delle performance tramite il vCenter Server

Il vCenter Server mette a disposizione diversi strumenti di verifica delle performance. Con vSphere Client, i dati di performance sono localizzabili sull’omonimo tab ai vari livelli di datacenter, host e macchine virtuali. Con vSphere Web Client, fare clic su Monitor > Performance sui diversi oggetti datacenter, host, macchine virtuali, ecc.

vsphere performance monitor

Le informazioni sono mostrate con dei grafici. Sono inoltre presenti due viste: Overview e Advanced. Con la prima vengono mostrati i valori relativi a CPU, dischi, memoria e rete. Con la seconda sono disponibili più contatori, le viste sono personalizzabili ed è possibile sia esportare sia stampare i dati.

Analisi delle prestazioni tramite riga di comando

A livello di host ESXi, è disponibile uno strumento a riga di comando per verificare in tempo reale l’utilizzo delle risorse. Lo strumento, chiamato esxtop, è l'equivalente VMware del noto comando TOP dei sistemi Unix, con il vantaggio di poter gestire parametri legati all'infrastruttura virtuale. Può essere avviato in tre modalità differenti:

  • interattiva - i dati sono stampati a schermo in tempo reale;
  • batch capture - è possibile registrare l’output verso un file, che può essere esportato ed analizzato successivamente anche con strumenti di terze parti;
  • replay - vengono visualizzati i parametri campionati durante una sessione di vm-support.

La sintassi di utilizzo di esxtop è la seguente:

esxtop [-] [h] [v] [b] [s] [a] [c filename] [R vm-support_dir_path] [d delay] [n iter]

Verifica della CPU

Per verificare se una VM è limitata da poche risorse CPU, è necessario prima di tutto un controllo all’interno del sistema operativo guest, con strumenti che consentano la verifica delle prestazioni della CPU. Si procede poi al controllo dal punto di vista dell’host ESXi: se l’utilizzo della CPU rimane elevato per lunghi periodi di tempo, significa che la VM è limitata da insufficienti risorse CPU assegnate.

In particolare, si consiglia la verifica del valore CPU ready (%RDY), ossia l’intervallo in cui una VM rimane in attesa di eseguire le istruzioni CPU. I valori ottimali sono sotto la soglia del 5%. L’attesa si verifica quando, all’interno dello stesso host, più VM sono in coda per l’accesso alle risorse CPU.

Verifica della memoria

I problemi di poca memoria disponibile devono essere verificati sia a livello di VM che di host. Nel primo caso, è necessario verificare che la VM non abbia un’attività di ballooning troppo frequente, situazione che si verifica quando il memory ballon driver richiede ulteriore memoria per la VM. Nel secondo caso, è necessario verificare i valori di swap-in e swap-out nei grafici di performance dell’host ESXi; questi valori sono ripetutamente alti se più VM sono limitate dalla memoria, e presentano tutte un’elevata attività di ballooning e di paging. Ricordiamo che il paging è il processo mediante il quale blocchi di codice vengono spostati dalla memoria RAM all’hard disk, su un file detto di paging o di swap. Il paging eccessivo, sia in ambiente virtuale che fisico, è sempre il primo indicatore di un quantitativo insufficiente di RAM.

I valori da verificare con particolare attenzione sono indicati di seguito.

  • Memctl – mostra le attività del memory ballon driver. I valori sono alti quando il VMkernel ha bisogno di recuperare memoria già allocata. Il memory balloon driver, presente nelle VM con i VMware Tools installati, permette al VMkernel di trasferire memoria dalle VM poco impegnate ad altre VM che necessitano di ulteriore memoria, nelle situazioni di RAM overcommitment.
  • Swap – mostra i valori dell’attività di paging.
  • Zip – valori relativi all’attività di compressione della memoria da parte del VMkernel.

Latenza dei dischi

La latenza dei dischi è il primo dato da verificare quando si hanno problemi di prestazioni sullo storage. A livello host, è possibile monitorare il throughput (capacità di trasmissione) e la latenza (intervallo tra un input ed un output) per datastore e storage adapter. A livello di VM, è possibile monitorare throughput e latenza per specifici dischi virtuali. Il throughput si verificato tramite i valori di Read rate e Write rate, mentre la latenza con i valori di Read latency e Write Latency.

In particolare, è opportuno monitorare i valori indicati di seguito.

  • Kernel command latency - tempo medio (espresso in millisecondi) che il VMkernel impiega per processare ogni comando SCSI. Dovrebbe essere compreso tra 0 e 1 millisecondo.
  • Phisical device command latency - tempo medio (espresso in millisecondi) che lo storage fisico impiega per processare ogni comando SCSI. Se superiore a 15, significa che lo storage è stato sottodimensionato.

Lentezza della rete

I problemi sulle prestazioni della rete sono normalmente causati da saturazione della banda. La perdita di pacchetti di rete indica la presenza di colli di bottiglia, pertanto i principali contatori da monitorare per la verifica delle attività di rete sono quelli di droppedTX e droppedRX, relativamente alle VM.

L'autore

Alessio Carta

Responsabile sistemi presso un System Integrator con sede in Sardegna, si occupa di informatica e telecomunicazioni da oltre 10 anni. La sua formazione comprende una laurea in ingegneria, una specializazione IFTS in progettazione di reti telematiche, certificazioni Cisco CCNA, Cisco CCNA Security, MCP sui sistemi Windows Server e VCP su VMware vSphere (5.1, 5.5, 6.0). È istruttore presso una VMware IT Academy con sede a Cagliari.