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