Analisi di performance con Oracle su virtual machine Gianluca Peco Sommario • Architetture e layout • Baseline • Descrizione dei test • Efficienza e scalabilita’ • – Test del grado di parallelismo delle CPU – Test del grado di parallelismo nell’accesso alla memoria – Pattern di accesso ai database realistico SELECT only ( NetIO ) – Pattern di accesso ai database realistico OLTP ( Disk I/O) Timekeeping – Sincronizzazione dell’orologio di sistema da una corretta fonte di clock Architetture di VM Layout del testbed Blade 1 Blade 2 HW Resource Disk CPU memory Disk VMM VMWARE GPFS HW Resource CPU memory XEN DOM0 XEN1 VMWARE1 NIC XEN2 NIC VMWARE2 wn-01-03-01-09-a OS SL5.0 8 GB RAM kernel 2.6.18-xen_3.1.0 SMP wn-01-03-01-10-a OS SL5.0 8 GB RAM kernel 2.6.18-8.1.15.el5PAE SMP Le quattro macchine virtuali sono tutte biprocessore Intel(R) Xeon(R) CPU 5130 @ 2.00GHz 2 GB di RAM OS RHEL4U4 kernel 2.6.9-42.ELsmp Le macchine reali sono quadriprocessore TX/RX TX RX 1 Trasmissione e ricezione verso/da macchina reale esterna utilizzando netperf UDP 0,9 0,8 TX 0,7 0,6 RX 0,5 RX 0,4 0,3 0,2 0,1 TX 0 XEN-HVM XEN-PV-HVM REAL VMWARE 0,7 I throughput aggregati del file system GPFS sono al netto dei dati trasferiti Throughput [Gb/s] Throughput [Gb/s] Baseline di rete e GPFS Write Read 0,6 0,5 0,4 0,3 0,2 0,1 0 XEN VMWARE 2-XEN 2-VMW 2-XEN 2-VMW REAL 2-REAL 5 Test di accesso alla memoria e cpu Programma scritto in C che alloca,scrive e legge ciclicamente 256 MB di memoria 200 180 160 140 120 100 80 60 40 20 0 1 2 3 4 5 6 7 8 9 10 11 12 Number of processes Programma di simulazione Gauss v30r4, generazione e simulazione Geant4 di eventi bb con decadimenti inclusivi ad utilizzo intensivo di cpu LHCb Gauss v30r4 Seconds per event Seconds per process Memory test 350 300 250 200 150 100 50 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 Number of processes 6 Descrizione dei Test Oracle (1/2) Test semplici: viene “stressato” un particolare aspetto del sistema Parallel: misura il grado di parallelismo nel calcolo parallelo. Efficienza e scalabilita’ nel calcolo su interi. Oracle Parallel Query: script SQL che lancia un comando SQL parallelo su una tabella partizionata Parallelismo interno: i thread sono creati internamente da Oracle Test CPU bound. Memory: misura il grado di parallelismo nell’accesso alla memoria. Efficienza e scalabilita’ nella contesa alla memoria. Test standard JLOCI: un comando SQL ricorsivo, mirato a determinare quante LIO (Logical I/O Operation) e’ in grado di effettuare una CPU (http://www.miraclebenelux.nl/jloci.html) . Parallelismo esterno: piu’ test script lanciati in backgorund da shell. I thread sono creati dal sistema operativo Test Memory bound: vengono effettuate piu’ select parallele che accedono agli stessi dati in memoria. Descrizione dei Test Oracle (2/2) Test realistici: tramite SwingBench vengono simulate operazioni complesse sul database. OLTP (Online Transaction Processing): simula applicazioni transaction oriented (es. FTS, CASTOR) in cui vengono effettuate soprattutto piccole transazioni (operazioni di lettura/scrittura) che modificano piccole quantita’ di dati. Basato sul pattern OrderEntry con thinking time=0 Tablespace 100 MByte ( tutto in memoria ) per ridurre al minimo l’I/O su disco ( praticamente solo i REDOLOG) ca 8Mb/s e accesso praticamente sequenziale in scrittura Praticamente no Net I/O ca 4 Mb/s R/W Rapporto letture/scritture 60/40 Select only: simula applicazioni data warehouse (es. Conditions Database) in cui vengono effettuate soprattutto query (operazioni di sola lettura) su grandi moli di dati e pochi update Basato sul pattern OrderEntry con thinking time=0 Tablespace 100 MByte ( tutto in memoria ) effettuando SELECT Disk I/O ca 0 Net I/O nelle condizioni peggiori 50 Mb/s Rapporto Letture/scritture 100/0 Efficienza Memoria & CPU I test di accesso alla memoria eseguito sequenzialmente con 1,2,3,4,8 processi presenta un notevole grado di efficienza rispetto alla macchina reale Il numero di parallel clients in ascisse rappresenta il totale dei processi contemporaneamente in esecuzione in una macchina fisica I test realizzati con Parallel.sql e grado di parallelismo 1,2,3,4,8 dimostra efficienze notevoli sia con singola che doppia vm confermando i risultati ottenuti con i test della baseline Il Dom0 si comporta essenzialmente come la macchina reale Efficienza OLTP & SELECT ONLY I test effettuati utilizzando un pattern realistico SELECT ONLY evidenziano che in condizioni miste con prevalenza di network I/O : • l’efficienza cala a meno del 50% • che XEN tende a comportarsi leggermente peggio di VMware I test effettuati utilizzando un pattern realistico OLTP dimostra che in condizioni miste di cpu utilization, memory utilization , disk I/O sequenziale e random (con I/O wait < 10%): • l’efficienza cala a ca il 75% • XEN tende a comportarsi leggermente peggio di VMware Scalabiltà cpu & memory Nel primo test Parallel.sql Il sistema scala linermente fino a 4 processi sia nel dom0 che nella doppia vm e fino a 2 processi nella macchina virtuale singola Nel test memory.sql multi trhead Il sistema non scala perfettamente evidenziando qualche problema probabilmente nell’accesso contemporaneo alla memoria da parte dei singoli core Non si notano differenze sostanziali tra reale e virtuale Scalabilita’ Select only Avg TPS Avg TPS vs Client 18000 16000 14000 12000 10000 8000 6000 4000 2000 0 2XEN 2vmware 2 x XEN 2 x vmware 0 5 10 15 20 blade Number of client CPU vs Clients 100 90 CPU Idle % 80 2XEN 70 60 2vmware 50 2 x XEN 40 30 2 x vmware 20 blade 10 0 0 5 10 15 20 Backpressure del load generator costante e non bloccante. Cpu idle del load generator > 50% Numero di TPS in funzione del numero di client del load generator in tutte le condizioni e relativa percentuale di cpu idle ( media delle due nel caso di doppia ) Pare che Vmware necessiti di meno risorse rispetto a XEN Scalabilita’ OLTP 600 500 400 2vmware mean TPS 2xen mean TPS 300 blade mean TPS 200 Backpressure del load generator costante cpu idle > 50% 1xvmware 100 1xXEN 0 0 5 10 15 20 60 50 2vmware mean idle 40 2xen mean idle 30 blade mean idle 20 1xvmware 10 1xXEN 0 0 5 10 15 20 Numero di TPS in funzione del numero di client del load generator in tutte le condizioni e relativa percentuale di cpu idle misurato dai virtual host Pare che Vmware necessiti di meno risorse rispetto a XEN Timekeeping Timekeeping considerazioni generali Il problema riguarda la sincronizzazione dell’orologio hw in condizioni di utilizzo intenso delle risorse ( CPU,IRQ ) il sistema perde dei tick che il kernel ospitato non riesce a recuperare. Da cio’ si ottiene una deriva dell’orologio sw in piu’ o in meno non ‘gestibile da ntpd Workaround XEN – Nella versione da noi provata abbiamo impostato il parametro del kernel clock=PIT Workaround VMWARE -Installazione dei vmware-tools che implementano correzioni a livello applicazione. Hanno un comportamento anomalo e precisamente si attivano solo in condizioni di alto utilizzo delle risorse creando una gestione ad elastico del tempo. ( parametrizzabile )Potrebbero influenzare il comportamento delle applicazioni che fanno richieste all’orologio di sistema come i benchmark stessi http://www.vmware.com/pdf/vmware_timekeeping.pdf http://support.microsoft.com/kb/918461 http://lists.centos.org/pipermail/centos/2008-January/092410.html Conclusioni In linea generale i sistemi virtuali testati si dimostrano robusti ed affidabili in tutte le loro componenti e con entrambi i sistemi di virtualizzazione Le performance in presenza di notevole contesa delle risorse evidenziano efficienze di : CPU 85-95% Memory 85-95% Cpu Disk I/O 60-80% ( GPFS ) CPU Net I/O 50% Ambiti di utilizzo di Oracle on VM : Ambiente di test e sviluppo Aggregazione di istanze a basso utilizzo di CPU in sistemi multiprocessore con alto grado di isolamento Sistemi di HA senza l’utilizzo di Oracle RAC TO DO FAILOVER e HA RAC ORACLEVM ( Freeware ) Test di scalabilita’ ed efficienza in condizioni di utilizzo normale delle risorse Fine tuning dei sistemi di virtualizzazione per ambienti applicativi specifici Realizzazione di immagini di applicazioni preconfezionate (Oracle,Mysql,Cluster,etc.) Test simili • Nota vmware A performance comparison • Nota XenSource A performance comparison • Nota Vmware SQL Server performance • Nota Vmware Multi-NIC • http://www.vmware.com/pdf/Oracle_Scaling_in_ESX_Server.pdf