Ottimizzazione di Debian Lenny e VMware Server 2
Il bello di Linux è che può essere facilmente e pesantemente personalizzato.
La virtualizzazione dei sistemi porta una serie di innegabili benefici, ma chiaramente anche i contro devono essere valutati. E non sono proprio pochi.
Il pesante (e continuo) uso dei dischi e la lentezza della rete rappresentano, dal mio punto di vista, i principali svantaggi.
Ho quindi deciso di tweakkare la Lenny per cercare di ottenere qualcosa di più.
Come prima cosa due cenni sul sistema nel quale il test è stato eseguito. La macchina è un IBM xSeries 226 con 5 GB di memoria, 2x36 GB in RAID1 per sistema operativo e swap e 3x73 GB in RAID5 per le macchine virtuali. Per entrambi il filesystem è ext3.
La macchina virtuale da cui ho eseguito tutti i test è un Windows Server 2003 R2 con tre dischi virtuali:
Per impostare il journaling writeback è necessario aggiungere in
Esiste anche il ordered, più lento del writeback ma più sicuro e più veloce ma meno sicuro del journal. Una buona alternativa per dormire sonni tranquilli.
Informazioni più dettagliate: Gentoo Linux Documentation - Advanced filesystem implementor's guide.
A meno che non ce ne sia reale bisogno, anche l'ACPI è bene disabilitarlo.
In definitiva, la riga
Uso del
Un buon boost lo si ottiene sfruttando il tmpfs come percorso temporaneo, dimensionandolo in modo tale da ospitare la somma della memoria configurata per tutte le macchine virtuali in esecuzione. Nel mio caso ho 3840 MB di memoria totale utilizzata per le macchine virtuali, per cui dimensiono tmpfs a 4 GB. Aprire con un editor
Ora non resta che dire a VMware di usare
Aggiungere al file
Ulteriore tweaking in
In questo modo VMware non salverà la memoria inutilizzata su disco (quei file con un nome in hex nella directory della VM) e sfrutta la memoria in modo migliore diminuendo le operazioni di I/O su disco.
Ho quindi una media di 86,58 MBps prima e 90,5 MBps dopo.
Le prestazioni del disco SCSI sono aumentate sensibilmente. Al contrario, il disco IDE è andato peggiorando. Avendo eseguito il programma una sola volta il risultato è da prendere con le pinze e pertanto solamente indicativo.
Riguardo alla velocità della rete mi sono subito accorto di una cosa: la navigazione nelle condivisioni di Windows prima era molto lenta, e per ogni file che creavo (Nuovo > Documento di testo) dando invio per la conferma avevo circa 1 secondo di attesa. Ora la creazione del nuovo file è istantanea, evidentemente il tuning alla rete è servito a qualche cosa.
Il disco è effettivamente migliorato in reattività e le prestazioni in lettura/scrittura sono visibilmente superiori. Il journaling writeback è una manna, spesso utilizzata per risolvere problemi di lentezza dei dischi su sistemi vecchi o con applicativi il cui carico di I/O è notevole.
Cercando con Google si possono trovare diversi how-to e mini guide per ottimizzare un host Linux per VMware Server. Io ho cercato di seguire le modifiche che apportassero maggiori benefici, ma volendo strafare di tweaks ce ne sono molti altri, il fatto è che se presi singolarmente le differenze sono pressoché nulle.
La virtualizzazione dei sistemi porta una serie di innegabili benefici, ma chiaramente anche i contro devono essere valutati. E non sono proprio pochi.
Il pesante (e continuo) uso dei dischi e la lentezza della rete rappresentano, dal mio punto di vista, i principali svantaggi.
Ho quindi deciso di tweakkare la Lenny per cercare di ottenere qualcosa di più.
Come prima cosa due cenni sul sistema nel quale il test è stato eseguito. La macchina è un IBM xSeries 226 con 5 GB di memoria, 2x36 GB in RAID1 per sistema operativo e swap e 3x73 GB in RAID5 per le macchine virtuali. Per entrambi il filesystem è ext3.
La macchina virtuale da cui ho eseguito tutti i test è un Windows Server 2003 R2 con tre dischi virtuali:
- sistema operativo e software 25 GB NTFS (blocco da 4 KB)
- dati 65 GB NTFS (blocco da 4 KB)
- swap 4 GB FAT32 (blocco da 8 KB)
Ottimizzazione del filesystem
Il filesystem ext3 prevede tre tipologie di journaling. La writeback è sicuramente la più performante, ma prima di usarla è bene valutare quali sono i rischi: nel mio caso, avendo UPS e alimentatori ridondanti, gli spegnimenti improvvisi non mi preoccupano molto, sebbene comunque il rischio ci sia. Basta armarsi di un buon backup.Per impostare il journaling writeback è necessario aggiungere in
/etc/fstab nella riga relativa al filesystem che ospita le macchine virtuali l'opzione:
data=writeback
Esiste anche il ordered, più lento del writeback ma più sicuro e più veloce ma meno sicuro del journal. Una buona alternativa per dormire sonni tranquilli.
Informazioni più dettagliate: Gentoo Linux Documentation - Advanced filesystem implementor's guide.
Ottimizzazione del kernel
Il kernel 2.6.x integra una certa opzione tickless che non fa che rallentare VMware Server.A meno che non ce ne sia reale bisogno, anche l'ACPI è bene disabilitarlo.
In definitiva, la riga
kernel del file /boot/grub/menu.lst dovrebbe diventare qualcosa del tipo:
/boot/vmlinuz-2.6.26-1-686-bigmem root=/dev/md0 ro acpi=off noapic nolapic nohz=off quiet
Uso del tmpfs come percorso temporaneo di VMware
Un buon boost lo si ottiene sfruttando il tmpfs come percorso temporaneo, dimensionandolo in modo tale da ospitare la somma della memoria configurata per tutte le macchine virtuali in esecuzione. Nel mio caso ho 3840 MB di memoria totale utilizzata per le macchine virtuali, per cui dimensiono tmpfs a 4 GB. Aprire con un editor /etc/default/tmpfs e specificare la dimensione del filesystem:
SHM_SIZE=4G
Ora non resta che dire a VMware di usare
/dev/shm come percorso temporaneo.
Aggiungere al file
/etc/vmware/config la riga:
tmpDirectory = "/dev/shm"
Ulteriore tweaking in /etc/vmware/config
mainMem.useNamedFile = "FALSE"
prefvmx.useRecommendedLockedMemSize = "TRUE"
prefvmx.minVmMemPct = "100"
In questo modo VMware non salverà la memoria inutilizzata su disco (quei file con un nome in hex nella directory della VM) e sfrutta la memoria in modo migliore diminuendo le operazioni di I/O su disco.
Ottimizzazione della rete
echo 30 >/proc/sys/net/ipv4/tcp_fin_timeout
echo 1800 >/proc/sys/net/ipv4/tcp_keepalive_time
echo 0 >/proc/sys/net/ipv4/tcp_window_scaling
echo 0 >/proc/sys/net/ipv4/tcp_sack
echo 0 >/proc/sys/net/ipv4/tcp_timestamps
echo 256960 > /proc/sys/net/core/rmem_default
echo 256960 > /proc/sys/net/core/rmem_max
echo 256960 > /proc/sys/net/core/wmem_default
echo 256960 > /proc/sys/net/core/wmem_max
echo 4000 > /proc/sys/net/core/netdev_max_backlog
echo 40960 > /proc/sys/net/core/optmem_max
Qualche test
Ho voluto valutare il cambiamento delle prestazioni non solo "a naso" ma con qualche tool di benchmarking: SiSoftware Sandra, IPerf e HD Speed.Rete (IPERF)
Ho eseguito 5 test "standard" in successione:| PRIMA | DOPO | |
| 1 | 87,3 | 90,0 |
| 2 | 87,7 | 90,5 |
| 3 | 85,9 | 90,7 |
| 4 | 85,0 | 90,0 |
| 5 | 87,0 | 91,3 |
Prestazioni dei dischi (HD Speed)
Il test ho voluto eseguirlo sia su disco SCSI NTFS che IDE FAT32. Esecuzione unica da 60 secondi:| PRIMA | DOPO | |
| SCSI NTFS | 85,6 | 100,9 |
| IDE FAT32 | 139,4 | 131,9 |
Prestazioni dei dischi (SiSoft Sandra)
| PRIMA | DOPO | |
| Velocità in lettura | 154,28 | 157,00 |
| Tempo d'accesso (ms) | 12,29 | 11,1 |
Latenza memoria (lineare) Cache-RAM (SiSoft Sandra)
| PRIMA | DOPO | |
| Latenza (ns) | 26 | 25 |
That's all folks
I benchmark lasciano intendere qualche variazione, anche se poi quello che dicono i test non conta più nulla quando il sistema viene usato veramente.Riguardo alla velocità della rete mi sono subito accorto di una cosa: la navigazione nelle condivisioni di Windows prima era molto lenta, e per ogni file che creavo (Nuovo > Documento di testo) dando invio per la conferma avevo circa 1 secondo di attesa. Ora la creazione del nuovo file è istantanea, evidentemente il tuning alla rete è servito a qualche cosa.
Il disco è effettivamente migliorato in reattività e le prestazioni in lettura/scrittura sono visibilmente superiori. Il journaling writeback è una manna, spesso utilizzata per risolvere problemi di lentezza dei dischi su sistemi vecchi o con applicativi il cui carico di I/O è notevole.
Cercando con Google si possono trovare diversi how-to e mini guide per ottimizzare un host Linux per VMware Server. Io ho cercato di seguire le modifiche che apportassero maggiori benefici, ma volendo strafare di tweaks ce ne sono molti altri, il fatto è che se presi singolarmente le differenze sono pressoché nulle.

2 Commenti
P.S.
Secondo te avendo i dischi partizionati con LVM l'uso delle diverse opzioni di scrittura per EXT3 da comunque vantaggi ? (es. usando un logical volume dedicato ai datastore con i flag da te indicati) ?
Commenta