6. Oracle Cloud extended trial license as part of
Oracle ACE Director program
Trial license comes with limitations / resource
quotas:
- 1TB max storage
- max 6 OCPUs (more details later)
- max 5 IP Endpoints
Performance tests conducted within these
limits
7.
8.
9.
10.
11.
12. No “hardware” performance difference
between different editions measurable – all
created services show similar performance
characteristics in terms of CPU and I/O
capabilities
Different performance still possible on software
level – Diagnostic + Tuning Pack features (e.g.
SQL Tuning advisor), InMemory Column Store
etc.
13.
14.
15.
16.
17. Services can be scaled by adding more CPUs,
RAM and storage
Currently no online operation, other Cloud
providers can do some of these scaling
activities online
18. Tablespace encryption mandatory
Network access rules, by default public access
disabled, only access via SSH possible
24. Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 8
On-line CPU(s) list: 0-7
Thread(s) per core: 2
Core(s) per socket: 4
Socket(s): 1
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 79
Model name: Intel(R) Xeon(R) CPU E5-2686 v4 @ 2.30GHz
Stepping: 1
CPU MHz: 2300.062
BogoMIPS: 4600.12
Hypervisor vendor: Xen
Virtualization type: full
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 46080K
NUMA node0 CPU(s): 0-7
25. 0 10 20 30 40
PLSQL8
PLSQL4
SQLLIO8
SQLLIO4
35.8
34
31.1
29.9
AVG_DURATION
0 10 20 30 40 50 60 70
PLSQL8
PLSQL4
SQLLIO8
SQLLIO4
60.5
36
47.4
22.7
AVG_DURATION
ORACLE DBAAS AMAZON RDS
Average duration of a CPU bound database operation, running 4 and 8 threads
SQLLIO: Burns CPU via SQL logical I/Os (SQL engine)
PLSQL: Burns CPU via PL/SQL computation (PL/SQL engine)
26. Disks exposed via XEN disk storage devices
(paravirtualized XEN disk drivers /dev/xvd*)
and then via device mapper and LVM
Single Instance: ext4 Filesystem, asynchronous
and direct I/O enabled by default
RAC: ASM plus ACFS on top
27. Average read IOPS figures over several days
4 / 8 threads, 4KB/8KB/16KB blocksize,
maximum physical, asynchronous I/O
TEST AVG_IOPS
4THREADS_4K 43900
8THREADS_4K 55760
4THREADS_8K 37748
8THREADS_8K 38986
4THREADS_16K 28631
8THREADS_16K 30264
TEST AVG_IOPS
4THREADS_4K 58968
8THREADS_4K 60943
4THREADS_8K 50945
8THREADS_8K 58740
4THREADS_16K 30670
8THREADS_16K 40330
Single Instance 4 OCPUs /
8 Cores/Threads
RAC Two Instances 2 + 2 OCPUs /
4 + 4 Cores/Threads
28. General Purpose SSD:
Less than 1TB allocated:
Peak: 3.000 IOPS for max. 30 minutes
Then throttled to something between 100 IOPS and
less than 3.000 IOPS depending on amount of
storage allocated
I/O credits re-load over time, determine the
possible IOPS peak between baseline and 3.000
IOPS
Provisioned IOPS: Maximum 30.000 IOPS
30. IOPS / throughput independent from allocated
storage size (tested with 25GB to 1TB) !!
Compare this to Amazon RDS where you need at
least 3TB of storage to get maximum 30.000 IOPS
for “Provisioned IOPS” premium storage
34. Four different tests performed over several
days
- PL/SQL CPU burning loop (PL/SQL engine)
- SQL logical I/O CPU burning
- Maximum physical asynchronous I/O - read
- Maximum physical asynchronous I/O - write
Comparison to dedicated physical host, four
cores, Samsung SSD vs. Oracle DBaaS eight
cores
35. Test 1: PL/SQL CPU burning loop, executed as
many times as CPUs available
declare
n number;
begin
loop
n := 0;
for i in 1..1000000000 loop
n := n + 1;
end loop;
insert into timings(testtype, thread_id, ts)
values ('PLSQL', &thread_id, systimestamp);
commit;
end loop;
end;
/
39. Test 2: SQL logical I/O CPU burning, executed as
many times as CPUs available
alter session set "_old_connect_by_enabled" = true;
declare
n number;
begin
loop
select
count(*) X
into n
from
kill_cpu&tabname
connect by
n > prior n
start with
n = 1;
insert into timings(testtype, thread_id, ts)
values ('SQLLIO', &thread_id, systimestamp);
commit;
end loop;
end;
/
43. Test 3: Maximum physical asynchronous I/O –
read only, minimum buffer cache, CPU times
declare
n number;
begin
loop
select /*+
leading(t_o)
use_nl(t_i)
index(t_o)
index(t_i)
*/
sum(t_i.n)
into n
from
t_o
, t_i&tabname t_i
where
t_o.id_fk = t_i.id;
insert into timings(testtype, thread_id, ts)
values ('&testtype', &thread_id, systimestamp);
commit;
end loop;
end;
/
47. Test 4: Maximum physical asynchronous I/O –
read-write, minimum buffer cache, CPU times
begin
loop
for rec in (
select /*+
index(t_o)
*/
id_fk
from
t_o
) loop
update t_i&tabname t_i
set n = rec.id_fk
where id = rec.id_fk;
end loop;
insert into timings(testtype, thread_id, ts)
values ('&testtype', &thread_id, systimestamp);
commit;
end loop;
end;
/
Co-author of “Expert Oracle Practices”
Oracle ACE Director: Acknowledged by Oracle for community contributions
OakTable Network: Informal and independent group of people believing in a scientific approach towards Oracle