OTN tour 2015 benchmarking oracle io performance with Orion by Alex Gorbachev

74
Benchmarking Oracle I/O Performance with ORION Alex Gorbachev November 2015

Transcript of OTN tour 2015 benchmarking oracle io performance with Orion by Alex Gorbachev

Page 1: OTN tour 2015 benchmarking oracle io performance with Orion by Alex Gorbachev

Benchmarking Oracle I/O Performance with ORIONAlex Gorbachev

November 2015

Page 2: OTN tour 2015 benchmarking oracle io performance with Orion by Alex Gorbachev

Alex Gorbachev• Chief Technology Officer at Pythian• Blogger• Cloudera Champion of Big Data• OakTable Network member• Oracle ACE Director• Founder of BattleAgainstAnyGuess.com• Founder of Sydney Oracle Meetup• EVP, IOUG• EVP, Ottawa Oracle User Group

Page 3: OTN tour 2015 benchmarking oracle io performance with Orion by Alex Gorbachev

© 2014 Pythian

3

Page 4: OTN tour 2015 benchmarking oracle io performance with Orion by Alex Gorbachev

ABOUT PYTHIAN

Pythian is a global data outsourcing and consulting company that specializes in optimizing and managing mission-critical data systems.

Pythian blends the world’s leading data experts with advanced, secure service delivery processes to create the industry’s best standard of care for its clients.

Since its inception, Pythian has managed some of the world’s largest, most business-critical data infrastructures.

4

11,500Pythian currently manages over 11,500 systems.

385Pythian currently employs more than 385 people in 30 countries worldwide.

1997Pythian was founded in 1997

New Q2 2015

Page 5: OTN tour 2015 benchmarking oracle io performance with Orion by Alex Gorbachev

© 2011-2012 Pythian5

Page 6: OTN tour 2015 benchmarking oracle io performance with Orion by Alex Gorbachev

© 2011-2012 Pythian6

ORION - ORacle I/O Numbers

Generate I/O workload similar to database patterns

&measure I/O performance

Page 7: OTN tour 2015 benchmarking oracle io performance with Orion by Alex Gorbachev

© 2011-2012 Pythian7

Orion is designed to

stress testthe I/O subsystem

Page 8: OTN tour 2015 benchmarking oracle io performance with Orion by Alex Gorbachev

© 2011-2012 Pythian8

Orion is not perfect for simulation but

good enough

Page 9: OTN tour 2015 benchmarking oracle io performance with Orion by Alex Gorbachev

© 2011-2012 Pythian9

Use Orion before moving/deploying databases to the

new platform

Page 10: OTN tour 2015 benchmarking oracle io performance with Orion by Alex Gorbachev

© 2011-2012 Pythian10

Orion is used intwo scenarios

Page 11: OTN tour 2015 benchmarking oracle io performance with Orion by Alex Gorbachev

© 2011-2012 Pythian11

You have no idea what you need

and want to ensure you get

You know what you needand want toensure you have it

or

Page 12: OTN tour 2015 benchmarking oracle io performance with Orion by Alex Gorbachev

© 2011-2012 Pythian

Infrastructure tuning - what’s the goal?

• When you don’t know how much you need you try at least to ensure you take all you can

• Assess what’s your possible bottlenecks • 1 Gbit Ethernet => 100+ MBPS or 10,000+ IOPS (8K)

• 15K RPM disk

• will easily serve 100-150 IOPS with average resp. time <10ms

• can get to 200-250 IOPS but response time increase to 20 ms

• SSD - see vendors specs

• reads: random vs sequential... small vs large... no matter

• writes: pattern matters

12

Page 13: OTN tour 2015 benchmarking oracle io performance with Orion by Alex Gorbachev

© 2011-2012 Pythian

Orion

• Uses code-base similar to Oracle database kernel • Standalone binary or part of Oracle home since 11.2.0.1

• Standalone Orion downloadable version is only 11.1

• Tests only I/O subsystem • Minimal CPU consumption

• Async I/O is used to submit concurrent I/O requests • Each run includes multiple data points / tests

• Scaling concurrency of small and large I/Os

13

Page 14: OTN tour 2015 benchmarking oracle io performance with Orion by Alex Gorbachev

© 2011-2012 Pythian

Controlling Orion

• Workload patterns • Small random I/O size and scale

• Large I/O size, scale and pattern (random vs sequential)

• Write percentage • Cache warming • Duration of each test (data point) • Data layout (concatenation vs striping)

14

Page 15: OTN tour 2015 benchmarking oracle io performance with Orion by Alex Gorbachev

© 2011-2012 Pythian

Data Points Matrix

Large/Small, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9... 0, x, x, x, x, x, x, x, x, x, x... 1, x, x, x, x, x, x, x, x, x, x... 2, x, x, x, x, x, x, x, x, x, x... 3, x, x, x, x, x, x, x, x, x, x... 4, x, x, x, x, x, x, x, x, x, x... 5, x, x, x, x, x, x, x, x, x, x... 6, x, x, x, x, x, x, x, x, x, x... 7, x, x, x, x, x, x, x, x, x, x... 8, x, x, x, x, x, x, x, x, x, x... 9, x, x, x, x, x, x, x, x, x, x... 10, x, x, x, x, x, x, x, x, x, x... 11, x, x, x, x, x, x, x, x, x, x... .............................. .............................. ..............................

15

Page 16: OTN tour 2015 benchmarking oracle io performance with Orion by Alex Gorbachev

© 2011-2012 Pythian

Data Points Matrix

Large/Small, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9... 0, x, x, x, x, x, x, x, x, x, x... 1, x, x, x, x, x, x, x, x, x, x... 2, x, x, x, x, x, x, x, x, x, x... 3, x, x, x, x, x, x, x, x, x, x... 4, x, x, x, x, x, x, x, x, x, x... 5, x, x, x, x, x, x, x, x, x, x... 6, x, x, x, x, x, x, x, x, x, x... 7, x, x, x, x, x, x, x, x, x, x... 8, x, x, x, x, x, x, x, x, x, x... 9, x, x, x, x, x, x, x, x, x, x... 10, x, x, x, x, x, x, x, x, x, x... 11, x, x, x, x, x, x, x, x, x, x...

16

-run advanced -matrix detailed# of tests = (Xlarge + 1) * (Xsmall + 1)

Page 17: OTN tour 2015 benchmarking oracle io performance with Orion by Alex Gorbachev

© 2011-2012 Pythian

Data Points Matrix

Large/Small, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9... 0, x, x, x, x, x, x, x, x, x, x... 1, x, x, x, x, x, x, x, x, x, x... 2, x, x, x, x, x, x, x, x, x, x... 3, x, x, x, x, x, x, x, x, x, x... 4, x, x, x, x, x, x, x, x, x, x... 5, x, x, x, x, x, x, x, x, x, x... 6, x, x, x, x, x, x, x, x, x, x... 7, x, x, x, x, x, x, x, x, x, x... 8, x, x, x, x, x, x, x, x, x, x... 9, x, x, x, x, x, x, x, x, x, x... 10, x, x, x, x, x, x, x, x, x, x... 11, x, x, x, x, x, x, x, x, x, x...

17

-run advanced -matrix row -num_large 2# of tests = Xsmall + 1

Page 18: OTN tour 2015 benchmarking oracle io performance with Orion by Alex Gorbachev

© 2011-2012 Pythian

Data Points Matrix

Large/Small, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9... 0, x, x, x, x, x, x, x, x, x, x... 1, x, x, x, x, x, x, x, x, x, x... 2, x, x, x, x, x, x, x, x, x, x... 3, x, x, x, x, x, x, x, x, x, x... 4, x, x, x, x, x, x, x, x, x, x... 5, x, x, x, x, x, x, x, x, x, x... 6, x, x, x, x, x, x, x, x, x, x... 7, x, x, x, x, x, x, x, x, x, x... 8, x, x, x, x, x, x, x, x, x, x... 9, x, x, x, x, x, x, x, x, x, x... 10, x, x, x, x, x, x, x, x, x, x... 11, x, x, x, x, x, x, x, x, x, x...

18

-run advanced -matrix col -num_small 3# of tests = Xlarge + 1

Page 19: OTN tour 2015 benchmarking oracle io performance with Orion by Alex Gorbachev

© 2011-2012 Pythian

Data Points Matrix

Large/Small, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9... 0, x, x, x, x, x, x, x, x, x, x... 1, x, x, x, x, x, x, x, x, x, x... 2, x, x, x, x, x, x, x, x, x, x... 3, x, x, x, x, x, x, x, x, x, x... 4, x, x, x, x, x, x, x, x, x, x... 5, x, x, x, x, x, x, x, x, x, x... 6, x, x, x, x, x, x, x, x, x, x... 7, x, x, x, x, x, x, x, x, x, x... 8, x, x, x, x, x, x, x, x, x, x... 9, x, x, x, x, x, x, x, x, x, x... 10, x, x, x, x, x, x, x, x, x, x... 11, x, x, x, x, x, x, x, x, x, x...

19

-run advanced -matrix basic# of tests = Xlarge + Xsmall + 1

Page 20: OTN tour 2015 benchmarking oracle io performance with Orion by Alex Gorbachev

© 2011-2012 Pythian

Data Points Matrix

Large/Small, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 0, x, x, x, x, x, x, x, x, x x 1, x, x, x, x, x, x, x, x, x x 2, x, x, x, x, x, x, x, x, x x 3, x, x, x, x, x, x, x, x, x x 4, x, x, x, x, x, x, x, x, x x 5, x, x, x, x, x, x, x, x, x x 6, x, x, x, x, x, x, x, x, x x 7, x, x, x, x, x, x, x, x, x x 8, x, x, x, x, x, x, x, x, x x 9, x, x, x, x, x, x, x, x, x x 10, x, x, x, x, x, x, x, x, x x 11, x, x, x, x, x, x, x, x, x, x

20

-run advanced -matrix max# of tests = Xlarge + Xsmall + 1

Page 21: OTN tour 2015 benchmarking oracle io performance with Orion by Alex Gorbachev

© 2011-2012 Pythian

Data Points Matrix

Large/Small, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9... 0, x, x, x, x, x, x, x, x, x, x... 1, x, x, x, x, x, x, x, x, x, x... 2, x, x, x, x, x, x, x, x, x, x... 3, x, x, x, x, x, x, x, x, x, x... 4, x, x, x, x, x, x, x, x, x, x... 5, x, x, x, x, x, x, x, x, x, x... 6, x, x, x, x, x, x, x, x, x, x... 7, x, x, x, x, x, x, x, x, x, x... 8, x, x, x, x, x, x, x, x, x, x... 9, x, x, x, x, x, x, x, x, x, x... 10, x, x, x, x, x, x, x, x, x, x... 11, x, x, x, x, x, x, x, x, x, x...

21

-run advanced -matrix point -num_large 2 -num_small 3# of tests = 1

Page 22: OTN tour 2015 benchmarking oracle io performance with Orion by Alex Gorbachev

© 2011-2012 Pythian

Data Points Matrix

Large/Small, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9... 0, x, x, x, x, x, x, x, x, x, x... 1, x, x, x, x, x, x, x, x, x, x... 2, x, x, x, x, x, x, x, x, x, x... 3, x, x, x, x, x, x, x, x, x, x... 4, x, x, x, x, x, x, x, x, x, x... 5, x, x, x, x, x, x, x, x, x, x... 6, x, x, x, x, x, x, x, x, x, x... 7, x, x, x, x, x, x, x, x, x, x... 8, x, x, x, x, x, x, x, x, x, x... 9, x, x, x, x, x, x, x, x, x, x... 10, x, x, x, x, x, x, x, x, x, x... 11, x, x, x, x, x, x, x, x, x, x...

22

-run simple

Page 23: OTN tour 2015 benchmarking oracle io performance with Orion by Alex Gorbachev

© 2011-2012 Pythian

Data Points Matrix

Large/Small, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9... 0, x, x, x, x, x, x, x, x, x, x... 1, x, x, x, x, x, x, x, x, x, x... 2, x, x, x, x, x, x, x, x, x, x... 3, x, x, x, x, x, x, x, x, x, x... 4, x, x, x, x, x, x, x, x, x, x... 5, x, x, x, x, x, x, x, x, x, x... 6, x, x, x, x, x, x, x, x, x, x... 7, x, x, x, x, x, x, x, x, x, x... 8, x, x, x, x, x, x, x, x, x, x... 9, x, x, x, x, x, x, x, x, x, x... 10, x, x, x, x, x, x, x, x, x, x... 11, x, x, x, x, x, x, x, x, x, x...

23

-run normal

Page 24: OTN tour 2015 benchmarking oracle io performance with Orion by Alex Gorbachev

© 2011-2012 Pythian

Data Points Matrix

Large/Small, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9... 0, x, x, x, x, x, x, x, x, x, x... 1, x, x, x, x, x, x, x, x, x, x... 2, x, x, x, x, x, x, x, x, x, x... 3, x, x, x, x, x, x, x, x, x, x... 4, x, x, x, x, x, x, x, x, x, x... 5, x, x, x, x, x, x, x, x, x, x... 6, x, x, x, x, x, x, x, x, x, x... 7, x, x, x, x, x, x, x, x, x, x... 8, x, x, x, x, x, x, x, x, x, x... 9, x, x, x, x, x, x, x, x, x, x... 10, x, x, x, x, x, x, x, x, x, x... 11, x, x, x, x, x, x, x, x, x, x...

24

-run oltp

Page 25: OTN tour 2015 benchmarking oracle io performance with Orion by Alex Gorbachev

© 2011-2012 Pythian

Data Points Matrix

Large/Small, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9... 0, x, x, x, x, x, x, x, x, x, x... 1, x, x, x, x, x, x, x, x, x, x... 2, x, x, x, x, x, x, x, x, x, x... 3, x, x, x, x, x, x, x, x, x, x... 4, x, x, x, x, x, x, x, x, x, x... 5, x, x, x, x, x, x, x, x, x, x... 6, x, x, x, x, x, x, x, x, x, x... 7, x, x, x, x, x, x, x, x, x, x... 8, x, x, x, x, x, x, x, x, x, x... 9, x, x, x, x, x, x, x, x, x, x... 10, x, x, x, x, x, x, x, x, x, x... 11, x, x, x, x, x, x, x, x, x, x...

25

-run dss

Page 26: OTN tour 2015 benchmarking oracle io performance with Orion by Alex Gorbachev

© 2011-2012 Pythian

Orion I/O Performance Metrics

• Small IOs • iops - average number of IOs per second

• {test name}_{date}_{time}_iops.csv

• lat - average IO response time

• {test name}_{date}_{time}_lat.csv

• Large IOs • mbps - throughput MB per second

• {test name}_{date}_{time}_mbps.csv

26

Page 27: OTN tour 2015 benchmarking oracle io performance with Orion by Alex Gorbachev

© 2011-2012 Pythian

Sample for -matrix detailed

27

Large/Small, 1, 2, 3, 4, 5 0, 58, 114, 117, 127, 84 1, 11, 29, 49, 63, 81 2, 12, 23, 30, 24, 31

iops

Large/Small, 1, 2, 3, 4, 5 0, 17184.84, 17487.14, 25594.11, 31505.73, 59205.26 1, 88272.75, 66781.92, 60642.59, 62514.76, 61699.40 2, 80854.55, 83085.06, 99019.72, 155528.65, 156500.44

lat (us)

Large/Small, 0, 1, 2, 3, 4, 5 1, 18.35, 12.14, 15.99, 16.99, 16.48, 16.37 2, 29.74, 27.07, 25.19, 21.18, 13.04, 13.33

mbps

Page 28: OTN tour 2015 benchmarking oracle io performance with Orion by Alex Gorbachev

© 2011-2012 Pythian

Sample for -matrix basic

28

Large/Small, 1, 2, 3, 4, 5 0, 80, 153, 165, 163, 197 1 2

iops

Large/Small, 1, 2, 3, 4, 5 0, 12370.09, 13060.23, 18112.16, 24448.27, 25250.33 1 2

lat (us)

Large/Small, 0, 1, 2, 3, 4, 5 1, 31.84 2, 29.87

mbps

Page 29: OTN tour 2015 benchmarking oracle io performance with Orion by Alex Gorbachev

© 2011-2012 Pythian

Trace file contentran (small): VLun = 0 Size = 10737418240 ran (small): Index = 0 Avg Lat = 22996.61 us Count = 431 ran (small): Index = 1 Avg Lat = 23825.39 us Count = 417 ran (small): nio=848 nior=652 niow=196 req w%=25 act w%=23 ran (small): my 2 oth 1 iops 65 lat 26081 us, bw = 0.51 MBps dur 9.96 s size 8 K, min lat 932 us, max lat 227524 us READ ran (small): my 2 oth 1 iops 19 lat 14499 us, bw = 0.15 MBps dur 9.96 s size 8 K, min lat 1422 us, max lat 120529 us WRITE ran (small): my 2 oth 1 iops 85 lat 23404 us, bw = 0.66 MBps dur 9.96 s size 8 K, min lat 932 us, max lat 227524 us TOTAL

seq (large): VLun = 0 Size = 10737418240 seq (large): Index = 0 Avg Lat = 22038.99 us Count = 450 seq (large): Stream = 0 VLun = 0 Start = 2675965952 End = 3152019456 seq (large): Stream = 0 Avg Lat = 22038.99 us CIO = 1 NIO Count = 450 seq (large): nio=450 nior=450 niow=0 req w%=25 act w%=0 seq (large): my 1 oth 2 iops 45 lat 22039 us, bw = 45.22 MBps dur 9.95 s size 1024 K, min lat 9976 us, max lat 223534 us READ seq (large): my 1 oth 2 iops 0 lat 0 us, bw = 0.00 MBps dur 9.95 s size 1024 K, min lat 18446744073709551614 us, max lat 0 us WRITE seq (large): my 1 oth 2 iops 45 lat 22039 us, bw = 45.22 MBps dur 9.95 s size 1024 K, min lat 9976 us, max lat 223534 us TOTAL

29

Page 30: OTN tour 2015 benchmarking oracle io performance with Orion by Alex Gorbachev

© 2011-2012 Pythian

Concurrent I/O requests

= number of

outstanding I/

30

Separate process for

large and small

Page 31: OTN tour 2015 benchmarking oracle io performance with Orion by Alex Gorbachev

© 2011-2012 Pythian

Setting Scale of Concurrent I/Os

• Range of concurrency is {0..max} • unless specified with -num_small or -num_large or fixed by run type

• max for small IOs • num_disks * 5 for advanced, simple and normal runs

• num_disks * 20 for OLTP run

• max for large IOs • num_disks * 2 for advanced, simple and normal runs

• num_disks * 15 for DSS run

31

Page 32: OTN tour 2015 benchmarking oracle io performance with Orion by Alex Gorbachev

© 2011-2012 Pythian

OLTP and DSS runs are impractical*

• Range of concurrency is {0..max} • unless specified with -num_small or -num_large or fixed by run type

• max for small IOs • num_disks * 5 for advanced, simple and normal runs

• num_disks * 20 for oltp run

• max for large IOs • num_disks * 2 for advanced, simple and normal runs

• num_disks * 15 for dss run

32

20 steps with interval num_disks{num_disks..num_disks*20)

To much concurrency

15 steps with interval num_disks{num_disks..num_disks*15)

* 11.2.0.3 behavior

Page 33: OTN tour 2015 benchmarking oracle io performance with Orion by Alex Gorbachev

© 2011-2012 Pythian

Orion command-line syntax required arguments: -testname & -run

orion -testname {testname} \ -run advanced | normal | simple | oltp | dss \ -matrix detailed | col | row | basic | max | point \ -duration {seconds} \ -num_disks {disks} \ -num_large {num} \ -num_streamIO {num} \ -size_large {Kb} \ -type rand|seq \ -num_small {num} \ -size_small {Kb} \ -simulate concat|raid0 \ -stripe {Mb} \ -write {%} \ -cache_size {MB} \ -verbose

33

Defines input file with the list of disks {testname}.lun in the current directory# cat mytest.lun /dev/sdc /dev/sdd /dev/sde

Page 34: OTN tour 2015 benchmarking oracle io performance with Orion by Alex Gorbachev

© 2011-2012 Pythian

Orion command-line syntax -run normal

orion -testname {testname} \ -run advanced | normal | simple | oltp | dss \ -matrix detailed | col | row | basic | max | point \ -duration 60 \ -num_disks {disks} \ -num_large {num} \ -type rand \ -num_streamIO {num} \ -size_large 1024 \ -num_small {num} \ -size_small 8 \ -simulate concat \ -stripe 1 \ -write 0 \ -cache_size {MB} \ -verbose

34

this is preset this can’t be this can be set

Page 35: OTN tour 2015 benchmarking oracle io performance with Orion by Alex Gorbachev

© 2011-2012 Pythian

Orion command-line syntax -run simple

orion -testname {testname} \ -run advanced | normal | simple | oltp | dss \ -matrix detailed | col | row | basic | max | point \ -duration 60 \ -num_disks {disks} \ -num_large {num} \ -type rand \ -num_streamIO {num} \ -size_large 1024 \ -num_small {num} \ -size_small 8 \ -simulate concat \ -stripe 1 \ -write 0 \ -cache_size {MB} \ -verbose

35

this is preset this can’t be this can be set

Page 36: OTN tour 2015 benchmarking oracle io performance with Orion by Alex Gorbachev

© 2011-2012 Pythian

Orion command-line syntax -run oltp

orion -testname {testname} \ -run advanced | normal | simple | oltp | dss \ -matrix detailed | col | row | basic | max | point \ -duration {seconds} \ -num_disks {disks} \ -num_large 0 \ -type rand|seq \ -num_streamIO {num} \ -size_large {Kb} \ -num_small {num} \ -size_small {Kb} \ -simulate concat|raid0 \ -stripe {Mb} \ -write {%} \ -cache_size {MB} \ -verbose

36

this is preset this can’t be this can be set

Page 37: OTN tour 2015 benchmarking oracle io performance with Orion by Alex Gorbachev

© 2011-2012 Pythian

Orion command-line syntax -run dss

orion -testname {testname} \ -run advanced | normal | simple | oltp | dss \ -matrix detailed | col | row | basic | max | point \ -duration {seconds} \ -num_disks {disks} \ -num_large {num} \ -type rand|seq \ -num_streamIO {num} \ -size_large {Kb} \ -num_small 0 \ -size_small {Kb} \ -simulate concat|raid0 \ -stripe {Mb} \ -write {%} \ -cache_size {MB} \ -verbose

37

this is preset this can’t be this can be set

Page 38: OTN tour 2015 benchmarking oracle io performance with Orion by Alex Gorbachev

© 2011-2012 Pythian

Orion command-line syntax -run advanced -matrix detailed | basic | max

orion -testname {testname} \ -run advanced | normal | simple | oltp | dss \ -matrix detailed | col | row | basic | max | point \ -duration {seconds} \ -num_disks {disks} \ -num_large {num} \ -type rand|seq \ -num_streamIO {num} \ -size_large {Kb} \ -num_small {num} \ -size_small {Kb} \ -simulate concat|raid0 \ -stripe {Mb} \ -write {%} \ -cache_size {MB} \ -verbose

38

this can’t be this can be set

Page 39: OTN tour 2015 benchmarking oracle io performance with Orion by Alex Gorbachev

© 2011-2012 Pythian

Orion command-line syntax -run advanced -matrix col

orion -testname {testname} \ -run advanced | normal | simple | oltp | dss \ -matrix detailed | col | row | basic | max | point \ -duration {seconds} \ -num_disks {disks} \ -num_large {num} \ -type rand|seq \ -num_streamIO {num} \ -size_large {Kb} \ -num_small {num} \ -size_small {Kb} \ -simulate concat|raid0 \ -stripe {Mb} \ -write {%} \ -cache_size {MB} \ -verbose

39

this must be set this can’t be this can be set

Page 40: OTN tour 2015 benchmarking oracle io performance with Orion by Alex Gorbachev

© 2011-2012 Pythian

Orion command-line syntax -run advanced -matrix row

orion -testname {testname} \ -run advanced | normal | simple | oltp | dss \ -matrix detailed | col | row | basic | max | point \ -duration {seconds} \ -num_disks {disks} \ -num_large {num} \ -type rand|seq \ -num_streamIO {num} \ -size_large {Kb} \ -num_small {num} \ -size_small {Kb} \ -simulate concat|raid0 \ -stripe {Mb} \ -write {%} \ -cache_size {MB} \ -verbose

40

this must be set this can’t be this can be set

Page 41: OTN tour 2015 benchmarking oracle io performance with Orion by Alex Gorbachev

© 2011-2012 Pythian

Orion command-line syntax -run advanced -matrix point

orion -testname {testname} \ -run advanced | normal | simple | oltp | dss \ -matrix detailed | col | row | basic | max | point \ -duration {seconds} \ -num_disks {disks} \ -num_large {num} \ -type rand|seq \ -num_streamIO {num} \ -size_large {Kb} \ -num_small {num} \ -size_small {Kb} \ -simulate concat|raid0 \ -stripe {Mb} \ -write {%} \ -cache_size {MB} \ -verbose

41

this must be set this can’t be this can be set

Page 42: OTN tour 2015 benchmarking oracle io performance with Orion by Alex Gorbachev

© 2011-2012 Pythian

Orion command-line syntax -simulate raid0

orion -testname {testname} \ -run advanced | normal | simple | oltp | dss \ -matrix detailed | col | row | basic | max | point \ -duration {seconds} \ -num_disks {disks} \ -num_large {num} \ -type rand|seq \ -num_streamIO {num} \ -size_large {Kb} \ -num_small {num} \ -size_small {Kb} \ -simulate concat|raid0 \ -stripe {Mb} \ -write {%} \ -cache_size {MB} \ -verbose

42

Great way to simulate ASM

striping

Page 43: OTN tour 2015 benchmarking oracle io performance with Orion by Alex Gorbachev

© 2011-2012 Pythian

Orion command-line syntax -type seq

orion -testname {testname} \ -run advanced | normal | simple | oltp | dss \ -matrix detailed | col | row | basic | max | point \ -duration {seconds} \ -num_disks {disks} \ -num_large {num} \ -type rand|seq \ -num_streamIO {num default 4} \ -size_large {Kb} \ -num_small {num} \ -size_small {Kb} \ -simulate concat|raid0 \ -stripe {Mb} \ -write {%} \ -cache_size {MB} \ -verbose

43

Page 44: OTN tour 2015 benchmarking oracle io performance with Orion by Alex Gorbachev

© 2011-2012 Pythian

Orion Sequential I/O

44

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

1 1 1 1 2 2 2 2 3 3 3 3 4 4 4 4 5 5 5

-num_streamIO 1

-num_streamIO 4

Schedule one

IO request

and wait

Schedule o

ne

IO request

and wait

Schedule one

IO request and wait

Schedule fourIO requests and wait

Schedule fourIO requests and wait

Schedule fourIO requests and wait

Page 45: OTN tour 2015 benchmarking oracle io performance with Orion by Alex Gorbachev

© 2011-2012 Pythian

What I/O in Oracle behaves like -num_streamIO 4?

• Some examples: • serial direct parallel read

• ARCH reads of redo logs

• some operations with temporary segments

• How do you verify/know? • Enable 10046 trace and OS trace (strace/truss/tusc)

45

* needs verification *

Page 46: OTN tour 2015 benchmarking oracle io performance with Orion by Alex Gorbachev

© 2011-2012 Pythian

Orion Flexibility (Inflexibility?)

46

• Single Orion run is enough to assess scalability at defined settings

• Need several separate Orion runs to vary • write %

• large IO pattern

• IO size

• striping

• Need multiple concurrent runs to • simulate more complex IO patterns

• simulate RAC

Page 47: OTN tour 2015 benchmarking oracle io performance with Orion by Alex Gorbachev

© 2011-2012 Pythian

Scenarios: OLTP traffic

• -run advanced -matrix row -large_num 0 • Shadow processes’ “db file sequential reads”

• DBWR’s “db file parallel write”

• Optionally several runs with different settings like -write %

• Analyze IOPS & response time

47

Page 48: OTN tour 2015 benchmarking oracle io performance with Orion by Alex Gorbachev

© 2011-2012 Pythian

Scenarios: OLTP traffic visualization Oracle Database Appliance example

48

ODA: Small IOPS scalability / HDDs

IO R

espo

nse

Tim

e, m

s

0

5

10

15

20

25

Thro

ughp

ut, I

OPS

0

1 000

2 000

3 000

4 000

5 000

1 2 3 4 5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100

IOPS Response Time

Page 49: OTN tour 2015 benchmarking oracle io performance with Orion by Alex Gorbachev

© 2011-2012 Pythian

Scenarios: OLTP traffic variation analysis Varying write percentage in ODA

49

Small IOPS by writes percentage Oracle Database Appliance / OLPT / whole HDDs

IO R

espo

nse

Tim

e, m

s

0

10

20

30

40

50

60

70

80

Thro

ughp

ut, I

OPS

0

1 000

2 000

3 000

4 000

5 000

6 000

7 000

Concurrent IO requests20 40 60 80 100 120 140 160 180 200 220 240 260 280 300 320 340 360 380 400

IOPS wrt 0% IOPS wrt 10% IOPS wrt 20% IOPS wrt 40% IOPS wrt 60%Latency wrt 0% Latency wrt 10% Latency wrt 20% Latency wrt 40% Latency wrt 60%

Page 50: OTN tour 2015 benchmarking oracle io performance with Orion by Alex Gorbachev

© 2011-2012 Pythian

Scenarios: OLTP traffic variation analysis Write percentage adjusted for ASM mirroring

50

Small IOPS by writes percentage Oracle Database Appliance / OLPT / whole HDDs

IO R

espo

nse

Tim

e, m

s

0

10

20

30

40

50

60

70

80

Thro

ughp

ut, I

OPS

0

1 000

2 000

3 000

4 000

5 000

6 000

7 000

Concurrent IO requests20 40 60 80 100 120 140 160 180 200 220 240 260 280 300 320 340 360 380 400

IOPS wrt 0% IOPS wrt 4% IOPS wrt 8% IOPS wrt 18% IOPS wrt 33%Latency wrt 0% Latency wrt 4% Latency wrt 8% Latency wrt 18% Latency wrt 33%

Page 51: OTN tour 2015 benchmarking oracle io performance with Orion by Alex Gorbachev

© 2011-2012 Pythian

Impact of writes on RAID5 is huge 40% writes => 4 times lower IOPS

51

Page 52: OTN tour 2015 benchmarking oracle io performance with Orion by Alex Gorbachev

© 2011-2012 Pythian

Same disks reconfigured as RAID1+0 40% writes => less than 50% hit

52

Page 53: OTN tour 2015 benchmarking oracle io performance with Orion by Alex Gorbachev

© 2011-2012 Pythian

Scenarios: Data Warehouse queries

• -run advanced -matrix col -small_num 0 • Keep read only (-write 0) • Concurrent users environment

• -type rand

• Single dedicated user performance • -type seq

• -num_streamIO 1 • Most reads in the DB are synchronous

• Analyze MBPS

53

Page 54: OTN tour 2015 benchmarking oracle io performance with Orion by Alex Gorbachev

© 2011-2012 Pythian

Scenarios: Data Warehouse IO visualization

54

Large IOs throughput

Thro

ughp

ut, M

BPS

0

75

150

225

300

Concurrent threads1 2 4 6 8 10 12 14 18 20 22 24 26 28 30 32

Page 55: OTN tour 2015 benchmarking oracle io performance with Orion by Alex Gorbachev

© 2011-2012 Pythian

Scenarios: RMAN backup

• -run advanced -matrix col -small_num 0 -type seq -num_streamIO 1

• Backup source only => -write 0 • Backup destination only => -write 100 • Database and backup destination combined => -write 50

• Watch for actual write percentage

• 1 thread => 0% actual writes

• 2 threads => 50% actual writes

• 3 threads => 33% actual writes

• 4 threads => 50% actual writes and etc...

• Analyze MBPS

55

Page 56: OTN tour 2015 benchmarking oracle io performance with Orion by Alex Gorbachev

© 2011-2012 Pythian

Scenarios: LGWR writes

• -run advanced -matrix point -small_num 0 -type seq -num_streamIO 1 -write 100 -num_large 1 -size_large 5 • -size_large should be set to average LGWR write size which is often

about 5-20k for OLTP systems

• -num_large n • multiple instances

• multiple LGWR threads in RAC

• redo logs multiplexing

• Analyze IOPS and response time • Gather from Orion run’s trace file

56

Page 57: OTN tour 2015 benchmarking oracle io performance with Orion by Alex Gorbachev

© 2011-2012 Pythian

Scenarios: LGWR writes visualization

57

ODA SSD sequential 32K IO streams (tripple mirroring)

Aver

age

Resp

onse

tim

e, m

s

0,00

0,20

0,40

0,60

0,80

1,00

Writ

es p

er s

econ

d

0

1600

3200

4800

6400

8000

Concurrent Threads2 4 6 8 10 12 14 16

IOPS Response Time, ms

Page 58: OTN tour 2015 benchmarking oracle io performance with Orion by Alex Gorbachev

© 2011-2012 Pythian

Combining different workloads

• Start multiple parallel Orion runs • OLTP -matrix point -num_large 0 -num_small X • LGWR -matrix point -num_large 1 -num_small 0 -write 100 • ARCH -matrix point -num_small 0 -write {0 | 50} • RMAN - matrix point -num_small 0 -write {0 | 50} • Add batch data load with large parallel writes • Add batch reporting (DW-like) with large reads

58

Cannot throttle IO other than controlling number of outstanding IOs

Cannot schedule a run with repetitive data points - must schedule multiple consecutive runs

Page 59: OTN tour 2015 benchmarking oracle io performance with Orion by Alex Gorbachev

© 2011-2012 Pythian

EC2 large 5 EBS disks: first run to test scalability

59

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25IOPS 156 326 178 411 532 729 928 1 103 1 023 1 070 964 1 202 1 285 1 232 1 204 1 245 1 352 1 338 1 360 1 149 1 379 1 327 1 334 1 362 1 363

Response time, ms

6,4 6,1 10,2 9,7 9,3 8,2 7,5 7,2 8,8 9,3 11,4 10 10,1 11,3 12,4 12,8 12,6 13,4 14 17,3 15,2 16,5 17,2 17,6 18,2

Initial OTLP test with 5 disks and 20% writes

Aver

age

resp

onse

tim

e, m

s

0

5

10

15

20

IOPS

0

350

700

1 050

1 400

Number of concurrent IOs1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25

IOPS Response time, ms

Page 60: OTN tour 2015 benchmarking oracle io performance with Orion by Alex Gorbachev

© 2011-2012 Pythian

Let’s mix in additional I/O workloads

DUR=60

# OLTP test of scalability - original first run # /root/orion11203/orion -testname baseoltp -run advanced -duration $DUR \ -matrix row -num_large 0 -write 20

# OLTP point /root/orion11203/orion -testname oltp -run advanced -duration $DUR -matrix point \ -num_large 0 -num_small 10 -write 20 & # Adding LGWR /root/orion11203/orion -testname lgwr -run advanced -duration $DUR -matrix point \ -num_large 1 -num_small 0 -type seq -num_streamIO 1 -size_large 5 -write 100 & # Adding ARCH /root/orion11203/orion -testname arch -run advanced -duration $DUR -matrix point \ -num_large 2 -num_small 0 -type seq -num_streamIO 1 -size_large 1024 -write 50 & # Backup in 1 channel # /root/orion11203/orion -testname backup -run advanced -duration $DUR -matrix point \ -num_large 1 -num_small 0 -type seq -num_streamIO 1 -size_large 1024 -write 0 & # Backup in 4 channels # /root/orion11203/orion -testname backup -run advanced -duration $DUR -matrix point \ -num_large 4 -num_small 0 -type seq -num_streamIO 1 -size_large 1024 -write 0 &

wait

60

Page 61: OTN tour 2015 benchmarking oracle io performance with Orion by Alex Gorbachev

© 2011-2012 Pythian61

OLTP IOPS Response time, ms

LGWR writes LGWR write, ms

OLTP only 1306 7,7OLTP +LGWR 1239 8,1 139 7,1

OLTP+LGWR+ARCH 576 17,4 17 56OLTP+LGWR+RMAN1 778 12,8 38 26,1OLTP+LGWR+RMAN4 571 17,5 49 20,3

Resp

onse

tim

e, m

s

0

4

8

12

16

20

IOPS

0

300

600

900

1200

1500

OLTP onlyOLTP +LGWR

OLTP+LGWR+ARCH

OLTP+LGWR+RMAN1

OLTP+LGWR+RMAN4

OLTP IOPS Response time, ms

LGW

R w

rite,

ms

0

15

30

45

60

75

LGW

R w

rites

per

sec

ond

0

30

60

90

120

150

LGWR writes LGWR write, ms

EC2... visualizing combined workload impact

Page 62: OTN tour 2015 benchmarking oracle io performance with Orion by Alex Gorbachev

© 2011-2012 Pythian

The best Orion 11.2 new feature

62

Bucket LGWR no ARCH

LGWR with ARCH

0 - 128 0 0 128 - 256 0 0 256 - 512 0 0 512 - 1024 1085 1 1024 - 2048 3376 8 2048 - 4096 395 1 4096 - 8192 845 0 8192 - 16384 1406 2 16384 - 32768 1115 161 32768 - 65536 161 699 65536 - 131072 4 169 131072 - 262144 0 17 262144 - 524288 1 10 524288 - 1048576 0 21048576 - 2097152 0 1

no ARCH

0 -

128

128

- 256

256

- 512

512

- 102

4

1

024

- 204

8

2

048

- 409

6

4

096

- 819

2

8

192

- 163

84

1

6384

- 32

768

3

2768

- 65

536

6

5536

- 13

1072

13

1072

- 26

2144

26

2144

- 52

4288

52

4288

- 10

4857

6

1048

576

- 209

7152

with ARCH

Histograms!

Page 63: OTN tour 2015 benchmarking oracle io performance with Orion by Alex Gorbachev

© 2011-2012 Pythian

Got RAC? Schedule parallel runs on each node

63

HP bladesHP Virtual ConnectFlex10Big NetApp box100 disks

Page 64: OTN tour 2015 benchmarking oracle io performance with Orion by Alex Gorbachev

© 2011-2012 Pythian

Example of Failed Expectations NetApp NAS, 1 Gbit Ethernet, 42 disks

64

Late

ncy,

ms

0,0

7,5

15,0

22,5

30,0

IOPS

0

1000

2000

3000

4000

5000

1 2 3 4 5 10 20 30 40 50 60 70 80 90 100

IOPS Latency

Read only

Late

ncy,

ms

0

10

20

30

40

50

IOPS

0

1000

2000

3000

4000

5000

1 2 3 4 5 10 20 30 40 50 60 70 80 90 100

Read write

Page 65: OTN tour 2015 benchmarking oracle io performance with Orion by Alex Gorbachev

© 2011-2012 Pythian

Tune-Up Results Switched from Intel to Broadcom NICs and disabled

65

Late

ncy,

ms

0

2

4

6

8

10

12

IOPS

0

2000

4000

6000

8000

10000

1 2 3 4 5 10 20 30 40 50 60 70 80 90 100

IOPS Latency

Late

ncy,

ms

0

2

4

6

8

IOPS

0

2500

5000

7500

10000

12500

15000

1 2 3 4 5 10 20 30 40 50 60 70 80 90 100

Page 66: OTN tour 2015 benchmarking oracle io performance with Orion by Alex Gorbachev

© 2011-2012 Pythian

Possible “What-If” scenarios

66

• Impact of a failed disk in a RAID group • Different block size • Different ASM allocation unit size (-stripe) • Assess foreign workload impact (shared SAN with other servers)

• Test impact of configuration / infrastructure changes • Impact of backup or a batch job • Impact of decreased MTTR target (higher -write %) • Platform stability test (repeating the same data point for many days)

• Impact of CPU starvation

Page 67: OTN tour 2015 benchmarking oracle io performance with Orion by Alex Gorbachev

© 2011-2012 Pythian

Concurrent IOs on axis X is not always the best...

67

ODA: Small IOPS scalability and data placement / HDDs

IO R

espo

nse

Tim

e, m

s

0

5

10

15

20

25

Thro

ughp

ut, I

OPS

0

1 200

2 400

3 600

4 800

6 000

1 2 3 4 5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100

IOPS whole disk IOPS outside 40% IOPS inside 60%Latency whole disk Latency outside 40% Latency inside 60%

Page 68: OTN tour 2015 benchmarking oracle io performance with Orion by Alex Gorbachev

© 2011-2012 Pythian

Smarter presentation 50% IOPS at the same response time

68

ODA: Improving IO throughput by data placement

IOPS

0

1200

2400

3600

4800

6000

IO response time0 5 10 15 20 25

whole diskoutside 40%inside 60%

Page 69: OTN tour 2015 benchmarking oracle io performance with Orion by Alex Gorbachev

© 2011-2012 Pythian

Storage types

• Anything as long as ASYNC IO is supported

• Local storage (LUNs or filesystem) • NAS via NFS • iSCSI / FC devices (any block or raw device) • Cluster filesystem should work just fine

69

Page 70: OTN tour 2015 benchmarking oracle io performance with Orion by Alex Gorbachev

© 2011-2012 Pythian

Beware of thin provisioning and other NAS magic

• Smart storage technologies play bad jokes • If in doubt - “initialize” disks with non-zeroes

70

Page 71: OTN tour 2015 benchmarking oracle io performance with Orion by Alex Gorbachev

© 2011-2012 Pythian

Orion 11.2

71

11.2.0.1 11.2.0.2 11.2.0.3

libcell11.so x x x

libclntsh.so.11.1 x x

libskgxp11.so x x

libnnz11.so x x

Included in • Database

• Grid home

• Client (tested Administrative option)

Dependencies

Page 72: OTN tour 2015 benchmarking oracle io performance with Orion by Alex Gorbachev

© 2011-2012 Pythian

Orion with SLOB (Silly Little Oracle Benchmark)

• Orion gives more control • Orion is easier to setup • Orion uses very little CPU - it doesn’t do anything with data • Easier to saturate IO subsystem without CPU starvation

• Less realistic results if you want to account database CPU use for LIO and processing the data

• Less realistic for multiprocess orchestration

• SLOB - is more realistic but more difficult to control

72

Page 73: OTN tour 2015 benchmarking oracle io performance with Orion by Alex Gorbachev

© 2011-2012 Pythian73

Visualization is the Key

Page 74: OTN tour 2015 benchmarking oracle io performance with Orion by Alex Gorbachev

© 2011-2012 Pythian

Thank you and Q&A

74

http://www.pythian.com/news/

http://www.facebook.com/pages/The-Pythian-Group/

http://twitter.com/pythian

http://www.linkedin.com/company/pythian

1-866-PYTHIAN

[email protected] or [email protected]

To contact us…

To follow us… [email protected]