SlideShare a Scribd company logo
1 of 73
Download to read offline
Benchmarking Oracle I/O
Performance with ORION
Alex Gorbachev
Ottawa, ON
4-Feb-2013
Alex Gorbachev

    • CTO, The Pythian Group
    • Blogger

    • OakTable Network member
    • Oracle ACE Director

    • BattleAgainstAnyGuess.com

    • IOUG, Director of Communities




2                            © 2011-2012 Pythian
Why Pythian
    Recognized Leader:
   •   Global industry-leader in remote database administration services and consulting for Oracle,
       Oracle Applications, MySQL and SQL Server

   •   Work with over 150 multinational companies such as Forbes.com, Fox Sports, Nordion and
       Western Union to help manage their complex IT deployments

    Expertise:
   •   One of the world’s largest concentrations of dedicated, full-time DBA expertise. Employ 7
       Oracle ACEs/ACE Directors

   •   Hold 7 Specializations under Oracle Platinum Partner program, including Oracle Exadata, Oracle
       GoldenGate & Oracle RAC

    Global Reach & Scalability:
   •   24/7/365 global remote support for DBA and consulting, systems administration, special
       projects or emergency response




                                                         © 2011-2012 Pythian


We are a managed services, consulting and solution provider of elite database and system administration skills in Oracle, MySQL and
Microsoft SQL Server environments.
4                        © 2011-2012 Pythian



Apply at hr@pythian.com
ORION - ORacle I/O Numbers


    Generate I/O workload similar
        to database patterns
                 &
      measure I/O performance


5                  © 2011-2012 Pythian
Orion is designed to

    stress test
    the I/O subsystem


6          © 2011-2012 Pythian
Orion isnot perfect
           for simulation but

       good enough

7                © 2011-2012 Pythian
Use Orion before moving/
    deploying databases to the new
                platform



8               © 2011-2012 Pythian
Orion is used in
      two scenarios


9           © 2011-2012 Pythian
You know what you need
  and want to
  ensure you have it

                               or


                You have no idea what you need
                      and want to ensure you get
                                      the best you can
 10                         © 2011-2012 Pythian



The first one is based on capacity planning.
The second you can call an infrastructure tuning
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


11                                        © 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




12                                    © 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)




13                                   © 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...
                ..............................
                ..............................
                ..............................




  14                                               © 2011-2012 Pythian


Each Orion run performs several tests and collects metrics for each test. The set of metrics for one test is a data
point. Based on the run configuration, Orion collects several data points scaling concurrency of small random IOs
and concurrency of large IOs.

Each data point is defined by the number of concurrent small I/O requests and the number of concurrent large IO
streams.

Orion iterates through concurrency of large I/Os from minimal to maximum (which can be the only one depending
on the run configuration) and then for each large IO concurrency level, it iterates through concurrency levels of
small IOs from minimum to maximum (which can be the only one as well depending on the run configuration). We
will see how it these ranges are selected later.

If you look at the matrix then you can imagine this process as running the tests row by row from top to bottom
and for each row, the sequence of tests is from left to right. Just like in English writing.

As Orion performs the tests, it writes the results in the trace file and at the end of the test it produces several
matrix files with collected metrics.
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...


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

  15                                               © 2011-2012 Pythian


There are several types of runs. Let’s first look into “advanced” mode and the rest of the runs are simpler versions
which present some of the parameters for you. You can think of them as wizard modes.

To define which data points are collected by Orion, the matrix type is defined. Detailed matrix is the most time
consuming to run - Orion will test every combination of large and small I/O workload - it will iterate from 0
concurrency level to maximum concurrency level for both large and small IOs.
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...


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

  16                                             © 2011-2012 Pythian


Matrix row fixes number of concurrent large I/O streams to a configurable number (can be zero) and iterates
through concurrency of small IOs.
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...


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

  17                                             © 2011-2012 Pythian


Matrix col fixes number of concurrent small IOs to a configurable number (can be zero) and iterates through
concurrency of large IO streams.
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...


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

  18                                                © 2011-2012 Pythian


Matrix basic performs tests of non-mixed small and large workloads.
First, Orion iterates through different concurrency levels of small IOs without any large IO streams.
Then, Orion iterates through concurrency of large IO streams without any small IOs.
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


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

  19                                                © 2011-2012 Pythian


Matrix max is similar to basic but instead of performing no large IO activity while iterating through small IOs,
Orion performs maximum number of large IO streams. The same with iterating through large IO streams
concurrency -- Orion will run at maximum concurrent small I/Os.
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...


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

  20                                                © 2011-2012 Pythian


Matrix point is the fastest run as it runs exactly one test defined.
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...



                    -run simple

  21                                             © 2011-2012 Pythian


Non-advanced runs automatically define matrix type as well as most of other parameters.
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...



                    -run normal

  22                                             © 2011-2012 Pythian


Non-advanced runs automatically define matrix type as well as most of other parameters.
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...



                    -run oltp

  23                                             © 2011-2012 Pythian


Non-advanced runs automatically define matrix type as well as most of other parameters.
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...



                    -run dss

  24                                             © 2011-2012 Pythian


Non-advanced runs automatically define matrix type as well as most of other parameters.
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




25                                        © 2011-2012 Pythian
Sample for -matrix detailed
       iops
      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

       lat (us)
      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

       mbps
       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




 26                                 © 2011-2012 Pythian



Orion 11.1.0.7 and earlier reports response time in ms.
11.2.0.1+ reports latency in us (microseconds)

Note how matrix is slightly different:
- iops and lat matrix exclude column with zero small IOs
- mbps matrix excludes row with zero large IOs
Sample for -matrix basic
      iops
     Large/Small,       1,      2,          3,           4,     5
               0,      80,    153,        165,         163,   197
               1
               2

      lat (us)
     Large/Small,        1,        2,        3,        4,                   5
               0, 12370.09, 13060.23, 18112.16, 24448.27,            25250.33
               1
               2

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




27                               © 2011-2012 Pythian
Trace file content
 ran   (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




 28                               © 2011-2012 Pythian



Separate read and write statistics.
Actual write percentage is important for sequential large I/O
because it assigns streams to write or read.
IOPS, LAT and MBPS are actually calculated for all types of IO but
matrix doesn’t report them all.

Can parse trace file to extract all statistics available.

Note: write stats for large sequential IO is bogus since there was
no writes done.
Concurrent
                                                     I/O requests
                                                          =
                                                      number of
                                                   outstanding I/Os




                                                   Separate process
                                                    for large and
                                                      small I/Os

 29                          © 2011-2012 Pythian



For each task, Orion forks 2 separate processes performing large
and small IOs. If only large or only small IOs are performed then
only one process is forked.
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




30                                     © 2011-2012 Pythian
OLTP and DSS runs are impractical*

     • Range                           20 steps with interval num_disks
                 of concurrency is {0..max}
                                                    {num_disks..num_disks*20)
     •   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                             To much
                                                               concurrency
     • max     for large IOs
     •   num_disks * 2 for advanced, simple and normal runs
     •   num_disks * 15 for dss run

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


31                                     © 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}           Defines input file with the
            -size_large {Kb}              list of disks {testname}.lun
            -type rand|seq                in the current directory
            -num_small {num}              # cat mytest.lun
            -size_small {Kb} 
            -simulate concat|raid0        /dev/sdc
            -stripe {Mb}                  /dev/sdd
            -write {%}                    /dev/sde
            -cache_size {MB} 
            -verbose




 32                               © 2011-2012 Pythian



This is the full command-line syntax.
The two parameters that are always required are -testname and -
run.

-testname identifies the only input file that Orion needs with the
list of disks - each disk is a path on the new line. The file name
must be testname with added .lun extension and the file must be
in the current directory. Orion will also prefix the output results
with testname.

-run defines types of Orion run and the rest of parameters depend
on it.
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                                         this is preset
                                                             this can’t be
                                                             this can be set

 33                               © 2011-2012 Pythian



For -run normal, Orion sets most of the parameters to predefined
value and you can only specify -num_disks, -cache_size and -
verbose.
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                                         this is preset
                                                             this can’t be
                                                             this can be set

 34                               © 2011-2012 Pythian



-run simple has identical settings but the the -matrix is basic.
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 {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                                         this is preset
                                                             this can’t be
                                                             this can be set

 35                               © 2011-2012 Pythian



-run oltp (make sure it’s lower case) lets you specify most of the
other parameters but you really only need to care about
parameters affecting small IOs. Defaults are used if you don’t
define a specific value.
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 {num} 
            -size_small {Kb} 
            -simulate concat|raid0 
            -stripe {Mb} 
            -write {%} 
            -cache_size {MB} 
            -verbose                                         this is preset
                                                             this can’t be
                                                             this can be set

 36                               © 2011-2012 Pythian



-run dss (make sure it’s lower case) lets you specify most of the
other parameters (except switching to sequential large IO streams)
but parameter controlling small IOs don’t matter. Defaults are
used if you don’t define a specific value.
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                                         this is preset
                                                             this can’t be
                                                             this can be set

 37                               © 2011-2012 Pythian



Run -advanced is the most flexible mode and depending on the
matrix type selected, most of the parameters can be specified.
When selecting -matrix detailed, basic or max, Orion selects
concurrency ranges for large and small IOs based on -num_disks
so -num_large and -num_small cannot be set explicitly.
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                                         this is preset
                                                             this can’t be
                                                             this can be set

 38                               © 2011-2012 Pythian



When selecting -matrix col (for column), you must specify -
num_small to define the column of data points to collect while -
num_large is not relevant.
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                                         this is preset
                                                             this can’t be
                                                             this can be set

 39                               © 2011-2012 Pythian



-matrix row is reverse to col - you must specify -num_large to
define the row of data points to collect while -num_small is not
relevant.
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                                         this is preset
                                                             this can’t be
                                                             this can be set

 40                               © 2011-2012 Pythian



To specify -matrix point, you need to explicitly set both -
num_small and -num_large to identify the data point to collect.
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                  Great way to
            -num_streamIO {num}            simulate ASM
            -size_large {Kb} 
            -num_small {num} 
                                               striping
            -size_small {Kb} 
            -simulate concat|raid0 
            -stripe {Mb} 
            -write {%} 
            -cache_size {MB} 
            -verbose




 41                               © 2011-2012 Pythian



Parameter -simulate controls how Orion treats multiple disks and
it has two options:
1. “concat” - all disks are concatenated sequentially into one
single virtual disk against which Orion submits IO requests.
2. “raid0” - Orion organizes a sing virtual disk by striping across
all disks defined in the testname.lun file using stripe size that can
be set by -stripe parameter (default 1Mb). This is the best way to
simulate ASM striping.
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




 42                               © 2011-2012 Pythian



Parameter -type controls large IO pattern:
1. “rand” - Orion performs large IOs across randomly selecting the
offset for each IO request from the whole virtual disk.
2. “seq” - Orion establishes multiple sequential IO streams
starting from predefined offsets of the virtual disk (that produced
by concatenating or striping). The starting offsets are selected at
the beginning of each test by splitting the virtual disks in equal
chunks of number of concurrent stream.
Orion Sequential I/O
                          e   t
                       on wai
                   ule d                                e
               h ed st an                             on ait
             Sc ue                                 le    w
                 q                             e du and
              re                            ch est
           IO                              S u
                                              q
                                           re                             e one
                                      IO                          Sc hedul d wait
                                                                        st an
                                                               IO reque



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



 -num_streamIO 4        1    1    1   1     2     2    2       2   3    3   3    3   4   4   4   4   5         5   5




                  Sch                                                                    Sch
              IO re edule fo                                                         IO re edule fo
                                                           Sch                            ques      u
                   ques      u
                       ts an r                         IO re edule fo                         ts an r
                            d wa                            ques      u                            d wa
                                 it                             ts an r                                   it
                                                                     d wa
                                                                            it



 43                                             © 2011-2012 Pythian



Each stream can also have multiple IO threads simulated (and by
default there are 4 threads). Thus when you are testing sequential
large IO, your real number of concurrent IO requests might
actually by much higher than you think because of default value
for -num_streamIO set to 4.
What I/O in Oracle behaves like -num_streamIO 4?

                                                   *n
     • Some    examples:                             ee
                                                             ds
     •   serial direct parallel read                              ve
                                                                     r   ifi
     •   ARCH reads of redo logs                                           ca
                                                                                tio
     •   some operations with temporary segments                                      n
                                                                                          *

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




44                                     © 2011-2012 Pythian
Orion Flexibility (Inflexibility?)

      • 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



 45                                  © 2011-2012 Pythian



Orion has lots of flexibility in the settings. However, for a single
run there is very limited control on data points collected. Variation
of any settings other then concurrency requires separate Orion
runs.
When simulating more complex scenarios, you would also need to
combine multiple run and make sure they are running in sync. To
simplify synchronization, you would use -matrix point.
Otherwise, sync different data points is a nightmare especially that
Orion can’t be used to collect the same data point multiple times
over and over in the same run while another run (or runs) iterates
through other data points.
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




 46                                     © 2011-2012 Pythian



Instead of using “-run oltp” use advanced run settings. This run
will simulate random reads that foreground processes are doing
as well as background random writes performed by DBWR.

One almost universally good variation to drill into is write
percentage - this will let you assess how well I/O subsystem can
handle random writes as opposed to random reads. These tests
usually show that no matter what storage vendors claim about
their super smart storage arrays and caching algorithms,
sustained random writes ruin any parity based mirroring.
Scenarios: OLTP traffic visualization
                    Oracle Database Appliance example
                                                              ODA: Small IOPS scalability / HDDs
                   5,000                                                                                                                          25


                                       IOPS              Response Time

                   4,000                                                                                                                          20




                                                                                                                                                       IO Response Time, ms
                   3,000                                                                                                                          15
Throughput, IOPS




                   2,000                                                                                                                          10




                   1,000                                                                                                                           5




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



              47                                                         © 2011-2012 Pythian



This is an example of the first Orion run of Oracle Database
Appliance to assess OLTP traffic scalability for read only workload.
Scenarios: OLTP traffic variation analysis
                    Varying write percentage in ODA
                                        Small IOPS by writes percentage Oracle Database Appliance / OLPT / whole HDDs
                    7,000                                                                                                                           80


                    6,000                                                                                                                           70


                                                                                                                                                    60
                    5,000




                                                                                                                                                         IO Response Time, ms
 Throughput, IOPS




                                                                                                                                                    50
                    4,000
                                                                                                                                                    40
                    3,000
                                                                                                                                                    30

                    2,000
                                                                                                                                                    20

                    1,000                                                                                                                           10


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

                            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%



 48                                                                        © 2011-2012 Pythian



Now let’s introduce variable write percentage and assess the
impact. Because ODA doesn’t use any RAID technology, we see
almost no degradation.
However, since ASM will be doing host based tripple mirroring (for
this purpose comparable to RAID1), this IOPS metrics are from
disks perspective and not from the database perspective. We need
to adjust IOPS and write percentage to see the numbers from
database perspective after ASM mirroring.
Scenarios: OLTP traffic variation analysis
                   Write percentage adjusted for ASM mirroring
                                     Small IOPS by writes percentage Oracle Database Appliance / OLPT / whole HDDs
                   7,000                                                                                                                              80


                   6,000                                                                                                                              70


                                                                                                                                                      60
                   5,000




                                                                                                                                                           IO Response Time, ms
Throughput, IOPS




                                                                                                                                                      50
                   4,000
                                                                                                                                                      40
                   3,000
                                                                                                                                                      30

                   2,000
                                                                                                                                                      20

                   1,000                                                                                                                              10


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

                           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%



       49                                                                © 2011-2012 Pythian



This is the adjusted IOPS and percentage values.
Impact of writes on RAID5 is huge
             40% writes => 4 times lower IOPS




 50                         © 2011-2012 Pythian



Here is an explicit example of RAID5 shortcomings.
Same disks reconfigured as RAID1+0
            40% writes => less than 50% hit




 51                        © 2011-2012 Pythian



Much less writes impact with RAID10 which actually becomes
noticeable closer to saturation point anyway.
Scenarios: Data Warehouse queries

      • -runadvanced -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



 52                                   © 2011-2012 Pythian



To simulate data warehousing workload from concurrent users use
read only workload with random large reads. Even though
individual queries might be scanning tables in more sequential
manner, the high concurrency level makes them look like random.
Environments with low concurrency levels will probably look more
like multiple sequential scan streams.
For data warehouse performance you are normally interested in
the scan throughput measured as MB per second.
Scenarios: Data Warehouse IO visualization
                                                        Large IOs throughput
                         300




                         225
      Throughput, MBPS




                         150




                          75




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




 53                                                          © 2011-2012 Pythian



Simple way to visualize.
You could also add throughput per reading stream to see
performance that each user doing serial scans will get, for
example.
Scenarios: RMAN backup

      • -runadvanced -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

 54                                           © 2011-2012 Pythian



No backup compression overhead accounted for.

Orion will be actually more aggressive sending IO requests
because it will keep either writing non-stop or reading non-stop
while an RMAN process needs to read and write, read and write,
read ...
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



55                                    © 2011-2012 Pythian
Scenarios: LGWR writes visualization
                                         ODA SSD sequential 32K IO streams (tripple mirroring)
                          8000                                                                             1.00




                          6400                                                                             0.80




                                                                                                                  Average Response time, ms
      Writes per second




                          4800                                                                             0.60




                          3200                                                                             0.40




                          1600                                                                             0.20




                            0                                                                                0
                                 2   4          6            8            10        12           14   16
                                                           Concurrent Threads

                                                    IOPS           Response Time, ms



 56                                                        © 2011-2012 Pythian



Because you can’t throttle down each thread, each thread will go
as fast as it can so you you always pushing some kind of a limit
and you will be throttled by the maximum what an I/O subsystem
can deliver or by CPU but Orion consumes very little CPU so you
ignore it.
Combining different workloads

      • Startmultiple 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

        Cannot schedule a run
                                                      Cannot throttle IO other
        with repetitive data points
                                                      than controlling number
        - must schedule multiple
                                                      of outstanding IOs
        consecutive runs

 57                             © 2011-2012 Pythian



Combining multiple runs is only reliable if using -matrix point.
EC2 large 5 EBS disks: first run to test scalability
                                                                Initial OTLP test with 5 disks and 20% writes
       1,500                                                                                                                                                           20

                                      IOPS                          Response time, ms


       1,125                                                                                                                                                           15




                                                                                                                                                                             Average response time, ms
IOPS




        750                                                                                                                                                            10




        375                                                                                                                                                              5




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

                         1          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               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




       58                                                                          © 2011-2012 Pythian



My initial run gives me general idea how my subsystem would
scale under different OLTP load with 20% writes. If I’m curios, I
might go further and perform few runs with different write
percentage and visualize the difference.
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




 59                                       © 2011-2012 Pythian



The first commented out command I used to assess initial
scalability and build the run visualized on the previous slide.

I then take it and convert to “OLTP point” and run it.
Next step I add “Adding LGWR” to run in parallel.
After that I add ARCH and collect another data point and etc.

Note that they are all starting at the same time and run in parallel
in the background and the script waits for all background jobs to
complete at the end using “wait” command.
EC2... visualizing combined workload impact
                                   150                                                                                    75



          LGWR writes per second
                                   120                                                                                    60




                                                                                                                                   LGWR write, ms
                                   90                                                                                     45

                                   60                                                                                     30

                                   30                                                                                     15

                                    0                                                                                         0

                                         OLTP IOPS           Response time, ms                  LGWR writes    LGWR write, ms

                                   1500                                                                                       20




                                                                                                                                         Response time, ms
                                   1200                                                                                       16

                                   900                                                                                        12
          IOPS




                                   600                                                                                         8

                                   300                                                                                         4

                                      0                                                                                        0
                                                         y                R                                N1            N4
                                             OLT   P onl             +LGW               +ARC
                                                                                             H
                                                                                                       RMA           RMA
                                                              OLTP                +LGWR        +LG WR+        +LG WR+
                                                                              OLTP         OLTP          OLTP

                                                                       OLTP IOPS Response time, ms LGWR writes        LGWR write, ms
                                         OLTP only                            1306              7.7
                                        OLTP +LGWR                            1239              8.1        139                                                7.1
                                     OLTP+LGWR+ARCH                            576            17.4          17                                               56.0
                                     OLTP+LGWR+RMAN1                           778            12.8          38                                               26.1
                                     OLTP+LGWR+RMAN4                           571            17.5          49                                               20.3



 60                                                                           © 2011-2012 Pythian



I can then record how my OLTP traffic is affected in different
scenarios including LGWR performance.
The best Orion 11.2 new feature


                                    Histograms!
          Bucket          LGWR no     LGWR with                  no ARCH
                           ARCH         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                    with ARCH
         4096 - 8192            845            0
         8192 - 16384          1406            2
        16384 - 32768          1115          161
        32768 - 65536           161          699
        65536 - 131072            4          169
                                                       0 - 128

                                                                 128 - 256

                                                                             256 - 512

                                                                                         512 - 1024

                                                                                                      1024 - 2048

                                                                                                                    2048 - 4096

                                                                                                                                  4096 - 8192

                                                                                                                                                8192 - 16384

                                                                                                                                                               16384 - 32768

                                                                                                                                                                               32768 - 65536

                                                                                                                                                                                               65536 - 131072

                                                                                                                                                                                                                131072 - 262144

                                                                                                                                                                                                                                  262144 - 524288

                                                                                                                                                                                                                                                    524288 - 1048576

                                                                                                                                                                                                                                                                       1048576 - 2097152
       131072 - 262144            0           17
       262144 - 524288            1           10
       524288 - 1048576           0            2
     1048576 - 2097152            0            1




61                                                 © 2011-2012 Pythian
Got RAC? Schedule parallel runs on each node




                                             HP blades
                                             HP Virtual Connect
                                             Flex10
                                             Big NetApp box
                                             100 disks




62                     © 2011-2012 Pythian
Example of Failed Expectations
     NetApp NAS, 1 Gbit Ethernet, 42 disks

             5000                                                                                         30.0

             4000
                         Read only                                                                        22.5




                                                                                                                     Latency, ms
             3000
      IOPS




                                                                                                          15.0
             2000

                                                                                                           7.5
             1000

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


            IOPS                  Latency

             5000                                                                                         50

             4000                                                                                         40
                    Read write




                                                                                                                 Latency, ms
             3000                                                                                         30
     IOPS




             2000                                                                                         20

             1000                                                                                         10

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



63                                                        © 2011-2012 Pythian
Tune-Up Results
     Switched from Intel to Broadcom NICs and disabled snapshots

                                                           IOPS                               Latency
        10000                                                                                                                                 12

                                                                                                                                              10
         8000

                                                                                                                                               8




                                                                                                                                                      Latency, ms
         6000
 IOPS




                                                                                                                                               6
         4000
                                                                                                                                               4

         2000
                                                                                                                                               2

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

                12500
                                                                                                                                              6
                10000




                                                                                                                                                   Latency, ms
         IOPS




                    7500                                                                                                                      4

                    5000
                                                                                                                                              2
                    2500

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


64                                                                           © 2011-2012 Pythian
Possible “What-If” scenarios

     • 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


65                             © 2011-2012 Pythian
Concurrent IOs on axis X is not always the best...

                                                    ODA: Small IOPS scalability and data placement / HDDs
                   6,000                                                                                                                             25
                               IOPS whole disk             IOPS outside 40%               IOPS inside 60%
                               Latency whole disk          Latency outside 40%            Latency inside 60%

                   4,800                                                                                                                             20




                                                                                                                                                          IO Response Time, ms
Throughput, IOPS




                   3,600                                                                                                                             15




                   2,400                                                                                                                             10




                   1,200                                                                                                                              5




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




 66                                                                    © 2011-2012 Pythian
Smarter presentation
     50% IOPS at the same response time
                   ODA: Improving IO throughput by data placement
        6000




        4800




        3600
 IOPS




        2400



                                                                  whole disk
        1200                                                      outside 40%
                                                                  inside 60%

          0
               0      5           10                         15      20         25

                                  IO response time

67                                     © 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




68                               © 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




69                              © 2011-2012 Pythian
Orion 11.2
      Included in
     •   Database
     •   Grid home
     •   Client (tested Administrative option)


     Dependencies
                              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


70                                   © 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



71                                     © 2011-2012 Pythian
Visualization is the Key



72             © 2011-2012 Pythian
Thank you and Q&A
     To contact us…

            sales@pythian.com or hr@pythian.com

            1-866-PYTHIAN



                                                                   gorbachev@pythian.com
     To follow us…
            http://www.pythian.com/news/


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


            http://twitter.com/pythian


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



73                                           © 2011-2012 Pythian

More Related Content

What's hot

Oracle RAC - Roadmap for New Features
Oracle RAC - Roadmap for New FeaturesOracle RAC - Roadmap for New Features
Oracle RAC - Roadmap for New FeaturesMarkus Michalewicz
 
A Cloud Journey - Move to the Oracle Cloud
A Cloud Journey - Move to the Oracle CloudA Cloud Journey - Move to the Oracle Cloud
A Cloud Journey - Move to the Oracle CloudMarkus Michalewicz
 
Oracle RAC 19c - the Basis for the Autonomous Database
Oracle RAC 19c - the Basis for the Autonomous DatabaseOracle RAC 19c - the Basis for the Autonomous Database
Oracle RAC 19c - the Basis for the Autonomous DatabaseMarkus Michalewicz
 
Oracle GoldenGate 18c - REST API Examples
Oracle GoldenGate 18c - REST API ExamplesOracle GoldenGate 18c - REST API Examples
Oracle GoldenGate 18c - REST API ExamplesBobby Curtis
 
Apache Iceberg: An Architectural Look Under the Covers
Apache Iceberg: An Architectural Look Under the CoversApache Iceberg: An Architectural Look Under the Covers
Apache Iceberg: An Architectural Look Under the CoversScyllaDB
 
Exadata master series_asm_2020
Exadata master series_asm_2020Exadata master series_asm_2020
Exadata master series_asm_2020Anil Nair
 
[非公開]Oracle Cloud Infrastructure Classic ネットワーク機能詳細
[非公開]Oracle Cloud Infrastructure Classic ネットワーク機能詳細[非公開]Oracle Cloud Infrastructure Classic ネットワーク機能詳細
[非公開]Oracle Cloud Infrastructure Classic ネットワーク機能詳細オラクルエンジニア通信
 
Oracle GoldenGate Roadmap Oracle OpenWorld 2020
Oracle GoldenGate Roadmap Oracle OpenWorld 2020 Oracle GoldenGate Roadmap Oracle OpenWorld 2020
Oracle GoldenGate Roadmap Oracle OpenWorld 2020 Oracle
 
Time series database, InfluxDB & PHP
Time series database, InfluxDB & PHPTime series database, InfluxDB & PHP
Time series database, InfluxDB & PHPCorley S.r.l.
 
Oracle GoldenGate on Docker
Oracle GoldenGate on DockerOracle GoldenGate on Docker
Oracle GoldenGate on DockerBobby Curtis
 
[Oracle DBA & Developer Day 2012] 高可用性システムに適した管理性と性能を向上させるASM と RMAN の魅力
[Oracle DBA & Developer Day 2012] 高可用性システムに適した管理性と性能を向上させるASM と RMAN の魅力[Oracle DBA & Developer Day 2012] 高可用性システムに適した管理性と性能を向上させるASM と RMAN の魅力
[Oracle DBA & Developer Day 2012] 高可用性システムに適した管理性と性能を向上させるASM と RMAN の魅力オラクルエンジニア通信
 
Oracle Database performance tuning using oratop
Oracle Database performance tuning using oratopOracle Database performance tuning using oratop
Oracle Database performance tuning using oratopSandesh Rao
 
Oracle運用Tips大放出! ~ RAC環境のRMANのパラレル化を極める 編 ~ @2016-02-23 JPOUG
Oracle運用Tips大放出! ~ RAC環境のRMANのパラレル化を極める 編 ~ @2016-02-23 JPOUG Oracle運用Tips大放出! ~ RAC環境のRMANのパラレル化を極める 編 ~ @2016-02-23 JPOUG
Oracle運用Tips大放出! ~ RAC環境のRMANのパラレル化を極める 編 ~ @2016-02-23 JPOUG Yuya Ohta
 
Oracle RAC features on Exadata
Oracle RAC features on ExadataOracle RAC features on Exadata
Oracle RAC features on ExadataAnil Nair
 
How many ways to monitor oracle golden gate - OOW14
How many ways to monitor oracle golden gate - OOW14How many ways to monitor oracle golden gate - OOW14
How many ways to monitor oracle golden gate - OOW14Bobby Curtis
 
E34 : [JPOUG Presents] Oracle Database の隠されている様々な謎を解くセッション「なーんでだ?」再び @ db tec...
E34 : [JPOUG Presents] Oracle Database の隠されている様々な謎を解くセッション「なーんでだ?」再び @ db tec...E34 : [JPOUG Presents] Oracle Database の隠されている様々な謎を解くセッション「なーんでだ?」再び @ db tec...
E34 : [JPOUG Presents] Oracle Database の隠されている様々な謎を解くセッション「なーんでだ?」再び @ db tec...Hiroshi Sekiguchi
 
"It can always get worse!" – Lessons Learned in over 20 years working with Or...
"It can always get worse!" – Lessons Learned in over 20 years working with Or..."It can always get worse!" – Lessons Learned in over 20 years working with Or...
"It can always get worse!" – Lessons Learned in over 20 years working with Or...Markus Michalewicz
 
Hit Refresh with Oracle GoldenGate Microservices
Hit Refresh with Oracle GoldenGate MicroservicesHit Refresh with Oracle GoldenGate Microservices
Hit Refresh with Oracle GoldenGate MicroservicesBobby Curtis
 
しばちょう先生による特別講義! RMANバックアップの運用と高速化チューニング
しばちょう先生による特別講義! RMANバックアップの運用と高速化チューニングしばちょう先生による特別講義! RMANバックアップの運用と高速化チューニング
しばちょう先生による特別講義! RMANバックアップの運用と高速化チューニングオラクルエンジニア通信
 

What's hot (20)

Oracle RAC - Roadmap for New Features
Oracle RAC - Roadmap for New FeaturesOracle RAC - Roadmap for New Features
Oracle RAC - Roadmap for New Features
 
A Cloud Journey - Move to the Oracle Cloud
A Cloud Journey - Move to the Oracle CloudA Cloud Journey - Move to the Oracle Cloud
A Cloud Journey - Move to the Oracle Cloud
 
AWR and ASH Deep Dive
AWR and ASH Deep DiveAWR and ASH Deep Dive
AWR and ASH Deep Dive
 
Oracle RAC 19c - the Basis for the Autonomous Database
Oracle RAC 19c - the Basis for the Autonomous DatabaseOracle RAC 19c - the Basis for the Autonomous Database
Oracle RAC 19c - the Basis for the Autonomous Database
 
Oracle GoldenGate 18c - REST API Examples
Oracle GoldenGate 18c - REST API ExamplesOracle GoldenGate 18c - REST API Examples
Oracle GoldenGate 18c - REST API Examples
 
Apache Iceberg: An Architectural Look Under the Covers
Apache Iceberg: An Architectural Look Under the CoversApache Iceberg: An Architectural Look Under the Covers
Apache Iceberg: An Architectural Look Under the Covers
 
Exadata master series_asm_2020
Exadata master series_asm_2020Exadata master series_asm_2020
Exadata master series_asm_2020
 
[非公開]Oracle Cloud Infrastructure Classic ネットワーク機能詳細
[非公開]Oracle Cloud Infrastructure Classic ネットワーク機能詳細[非公開]Oracle Cloud Infrastructure Classic ネットワーク機能詳細
[非公開]Oracle Cloud Infrastructure Classic ネットワーク機能詳細
 
Oracle GoldenGate Roadmap Oracle OpenWorld 2020
Oracle GoldenGate Roadmap Oracle OpenWorld 2020 Oracle GoldenGate Roadmap Oracle OpenWorld 2020
Oracle GoldenGate Roadmap Oracle OpenWorld 2020
 
Time series database, InfluxDB & PHP
Time series database, InfluxDB & PHPTime series database, InfluxDB & PHP
Time series database, InfluxDB & PHP
 
Oracle GoldenGate on Docker
Oracle GoldenGate on DockerOracle GoldenGate on Docker
Oracle GoldenGate on Docker
 
[Oracle DBA & Developer Day 2012] 高可用性システムに適した管理性と性能を向上させるASM と RMAN の魅力
[Oracle DBA & Developer Day 2012] 高可用性システムに適した管理性と性能を向上させるASM と RMAN の魅力[Oracle DBA & Developer Day 2012] 高可用性システムに適した管理性と性能を向上させるASM と RMAN の魅力
[Oracle DBA & Developer Day 2012] 高可用性システムに適した管理性と性能を向上させるASM と RMAN の魅力
 
Oracle Database performance tuning using oratop
Oracle Database performance tuning using oratopOracle Database performance tuning using oratop
Oracle Database performance tuning using oratop
 
Oracle運用Tips大放出! ~ RAC環境のRMANのパラレル化を極める 編 ~ @2016-02-23 JPOUG
Oracle運用Tips大放出! ~ RAC環境のRMANのパラレル化を極める 編 ~ @2016-02-23 JPOUG Oracle運用Tips大放出! ~ RAC環境のRMANのパラレル化を極める 編 ~ @2016-02-23 JPOUG
Oracle運用Tips大放出! ~ RAC環境のRMANのパラレル化を極める 編 ~ @2016-02-23 JPOUG
 
Oracle RAC features on Exadata
Oracle RAC features on ExadataOracle RAC features on Exadata
Oracle RAC features on Exadata
 
How many ways to monitor oracle golden gate - OOW14
How many ways to monitor oracle golden gate - OOW14How many ways to monitor oracle golden gate - OOW14
How many ways to monitor oracle golden gate - OOW14
 
E34 : [JPOUG Presents] Oracle Database の隠されている様々な謎を解くセッション「なーんでだ?」再び @ db tec...
E34 : [JPOUG Presents] Oracle Database の隠されている様々な謎を解くセッション「なーんでだ?」再び @ db tec...E34 : [JPOUG Presents] Oracle Database の隠されている様々な謎を解くセッション「なーんでだ?」再び @ db tec...
E34 : [JPOUG Presents] Oracle Database の隠されている様々な謎を解くセッション「なーんでだ?」再び @ db tec...
 
"It can always get worse!" – Lessons Learned in over 20 years working with Or...
"It can always get worse!" – Lessons Learned in over 20 years working with Or..."It can always get worse!" – Lessons Learned in over 20 years working with Or...
"It can always get worse!" – Lessons Learned in over 20 years working with Or...
 
Hit Refresh with Oracle GoldenGate Microservices
Hit Refresh with Oracle GoldenGate MicroservicesHit Refresh with Oracle GoldenGate Microservices
Hit Refresh with Oracle GoldenGate Microservices
 
しばちょう先生による特別講義! RMANバックアップの運用と高速化チューニング
しばちょう先生による特別講義! RMANバックアップの運用と高速化チューニングしばちょう先生による特別講義! RMANバックアップの運用と高速化チューニング
しばちょう先生による特別講義! RMANバックアップの運用と高速化チューニング
 

Similar to Benchmarking Oracle I/O Performance with Orion by Alex Gorbachev

OTN tour 2015 benchmarking oracle io performance with Orion by Alex Gorbachev
OTN tour 2015 benchmarking oracle io performance with Orion by Alex GorbachevOTN tour 2015 benchmarking oracle io performance with Orion by Alex Gorbachev
OTN tour 2015 benchmarking oracle io performance with Orion by Alex GorbachevAndrejs Vorobjovs
 
Deep Learning con CNTK by Pablo Doval
Deep Learning con CNTK by Pablo DovalDeep Learning con CNTK by Pablo Doval
Deep Learning con CNTK by Pablo DovalPlain Concepts
 
Deep Learning for New User Interactions (Gestures, Speech and Emotions)
Deep Learning for New User Interactions (Gestures, Speech and Emotions)Deep Learning for New User Interactions (Gestures, Speech and Emotions)
Deep Learning for New User Interactions (Gestures, Speech and Emotions)Olivia Klose
 
Multiple intelligences approach to Number Systems
Multiple intelligences approach to  Number SystemsMultiple intelligences approach to  Number Systems
Multiple intelligences approach to Number SystemsKatrin Becker
 
20190615 hkos-mysql-troubleshootingandperformancev2
20190615 hkos-mysql-troubleshootingandperformancev220190615 hkos-mysql-troubleshootingandperformancev2
20190615 hkos-mysql-troubleshootingandperformancev2Ivan Ma
 
Interactive Visualization With Bokeh (SF Python Meetup)
Interactive Visualization With Bokeh (SF Python Meetup)Interactive Visualization With Bokeh (SF Python Meetup)
Interactive Visualization With Bokeh (SF Python Meetup)Peter Wang
 
Deep learning with Keras
Deep learning with KerasDeep learning with Keras
Deep learning with KerasQuantUniversity
 
Unraveling mysteries of the Universe at CERN, with OpenStack and Hadoop
Unraveling mysteries of the Universe at CERN, with OpenStack and HadoopUnraveling mysteries of the Universe at CERN, with OpenStack and Hadoop
Unraveling mysteries of the Universe at CERN, with OpenStack and HadoopPiotr Turek
 
Bokeh Tutorial - PyData @ Strata San Jose 2015
Bokeh Tutorial - PyData @ Strata San Jose 2015Bokeh Tutorial - PyData @ Strata San Jose 2015
Bokeh Tutorial - PyData @ Strata San Jose 2015Peter Wang
 
Cassandra deep-dive @ NoSQLNow!
Cassandra deep-dive @ NoSQLNow!Cassandra deep-dive @ NoSQLNow!
Cassandra deep-dive @ NoSQLNow!Acunu
 

Similar to Benchmarking Oracle I/O Performance with Orion by Alex Gorbachev (13)

OTN tour 2015 benchmarking oracle io performance with Orion by Alex Gorbachev
OTN tour 2015 benchmarking oracle io performance with Orion by Alex GorbachevOTN tour 2015 benchmarking oracle io performance with Orion by Alex Gorbachev
OTN tour 2015 benchmarking oracle io performance with Orion by Alex Gorbachev
 
Deep Learning con CNTK by Pablo Doval
Deep Learning con CNTK by Pablo DovalDeep Learning con CNTK by Pablo Doval
Deep Learning con CNTK by Pablo Doval
 
Deep Learning for New User Interactions (Gestures, Speech and Emotions)
Deep Learning for New User Interactions (Gestures, Speech and Emotions)Deep Learning for New User Interactions (Gestures, Speech and Emotions)
Deep Learning for New User Interactions (Gestures, Speech and Emotions)
 
Multiple intelligences approach to Number Systems
Multiple intelligences approach to  Number SystemsMultiple intelligences approach to  Number Systems
Multiple intelligences approach to Number Systems
 
SXSW
SXSWSXSW
SXSW
 
SXSW
SXSWSXSW
SXSW
 
20190615 hkos-mysql-troubleshootingandperformancev2
20190615 hkos-mysql-troubleshootingandperformancev220190615 hkos-mysql-troubleshootingandperformancev2
20190615 hkos-mysql-troubleshootingandperformancev2
 
Interactive Visualization With Bokeh (SF Python Meetup)
Interactive Visualization With Bokeh (SF Python Meetup)Interactive Visualization With Bokeh (SF Python Meetup)
Interactive Visualization With Bokeh (SF Python Meetup)
 
Deep learning with Keras
Deep learning with KerasDeep learning with Keras
Deep learning with Keras
 
Unraveling mysteries of the Universe at CERN, with OpenStack and Hadoop
Unraveling mysteries of the Universe at CERN, with OpenStack and HadoopUnraveling mysteries of the Universe at CERN, with OpenStack and Hadoop
Unraveling mysteries of the Universe at CERN, with OpenStack and Hadoop
 
Bokeh Tutorial - PyData @ Strata San Jose 2015
Bokeh Tutorial - PyData @ Strata San Jose 2015Bokeh Tutorial - PyData @ Strata San Jose 2015
Bokeh Tutorial - PyData @ Strata San Jose 2015
 
Cassandra deep-dive @ NoSQLNow!
Cassandra deep-dive @ NoSQLNow!Cassandra deep-dive @ NoSQLNow!
Cassandra deep-dive @ NoSQLNow!
 
Intro to Neo4j 2.0
Intro to Neo4j 2.0Intro to Neo4j 2.0
Intro to Neo4j 2.0
 

More from Alex Gorbachev

Bridging Oracle Database and Hadoop by Alex Gorbachev, Pythian from Oracle Op...
Bridging Oracle Database and Hadoop by Alex Gorbachev, Pythian from Oracle Op...Bridging Oracle Database and Hadoop by Alex Gorbachev, Pythian from Oracle Op...
Bridging Oracle Database and Hadoop by Alex Gorbachev, Pythian from Oracle Op...Alex Gorbachev
 
Introduction to Machine Learning for Oracle Database Professionals
Introduction to Machine Learning for Oracle Database ProfessionalsIntroduction to Machine Learning for Oracle Database Professionals
Introduction to Machine Learning for Oracle Database ProfessionalsAlex Gorbachev
 
Under The Hood of Pluggable Databases by Alex Gorbachev, Pythian, Oracle OpeW...
Under The Hood of Pluggable Databases by Alex Gorbachev, Pythian, Oracle OpeW...Under The Hood of Pluggable Databases by Alex Gorbachev, Pythian, Oracle OpeW...
Under The Hood of Pluggable Databases by Alex Gorbachev, Pythian, Oracle OpeW...Alex Gorbachev
 
UTHOC2 - Under The Hood of Oracle Clusterware 2.0 - Grid Infrastructure by Al...
UTHOC2 - Under The Hood of Oracle Clusterware 2.0 - Grid Infrastructure by Al...UTHOC2 - Under The Hood of Oracle Clusterware 2.0 - Grid Infrastructure by Al...
UTHOC2 - Under The Hood of Oracle Clusterware 2.0 - Grid Infrastructure by Al...Alex Gorbachev
 
Demystifying Oracle RAC Workload Management by Alex Gorbachev, Pythian | NoCO...
Demystifying Oracle RAC Workload Management by Alex Gorbachev, Pythian | NoCO...Demystifying Oracle RAC Workload Management by Alex Gorbachev, Pythian | NoCO...
Demystifying Oracle RAC Workload Management by Alex Gorbachev, Pythian | NoCO...Alex Gorbachev
 
MOW2010: 1TB MySQL Database Migration and HA Infrastructure by Alex Gorbachev...
MOW2010: 1TB MySQL Database Migration and HA Infrastructure by Alex Gorbachev...MOW2010: 1TB MySQL Database Migration and HA Infrastructure by Alex Gorbachev...
MOW2010: 1TB MySQL Database Migration and HA Infrastructure by Alex Gorbachev...Alex Gorbachev
 
MOW2010: Under the Hood of Oracle Clusterware by Alex Gorbachev, Pythian
MOW2010: Under the Hood of Oracle Clusterware by Alex Gorbachev, PythianMOW2010: Under the Hood of Oracle Clusterware by Alex Gorbachev, Pythian
MOW2010: Under the Hood of Oracle Clusterware by Alex Gorbachev, PythianAlex Gorbachev
 
Oracle ASM 11g - The Evolution
Oracle ASM 11g - The EvolutionOracle ASM 11g - The Evolution
Oracle ASM 11g - The EvolutionAlex Gorbachev
 
Oracle 11g New Features Out-of-the-Box by Alex Gorbachev (from Sydney Oracle ...
Oracle 11g New Features Out-of-the-Box by Alex Gorbachev (from Sydney Oracle ...Oracle 11g New Features Out-of-the-Box by Alex Gorbachev (from Sydney Oracle ...
Oracle 11g New Features Out-of-the-Box by Alex Gorbachev (from Sydney Oracle ...Alex Gorbachev
 

More from Alex Gorbachev (9)

Bridging Oracle Database and Hadoop by Alex Gorbachev, Pythian from Oracle Op...
Bridging Oracle Database and Hadoop by Alex Gorbachev, Pythian from Oracle Op...Bridging Oracle Database and Hadoop by Alex Gorbachev, Pythian from Oracle Op...
Bridging Oracle Database and Hadoop by Alex Gorbachev, Pythian from Oracle Op...
 
Introduction to Machine Learning for Oracle Database Professionals
Introduction to Machine Learning for Oracle Database ProfessionalsIntroduction to Machine Learning for Oracle Database Professionals
Introduction to Machine Learning for Oracle Database Professionals
 
Under The Hood of Pluggable Databases by Alex Gorbachev, Pythian, Oracle OpeW...
Under The Hood of Pluggable Databases by Alex Gorbachev, Pythian, Oracle OpeW...Under The Hood of Pluggable Databases by Alex Gorbachev, Pythian, Oracle OpeW...
Under The Hood of Pluggable Databases by Alex Gorbachev, Pythian, Oracle OpeW...
 
UTHOC2 - Under The Hood of Oracle Clusterware 2.0 - Grid Infrastructure by Al...
UTHOC2 - Under The Hood of Oracle Clusterware 2.0 - Grid Infrastructure by Al...UTHOC2 - Under The Hood of Oracle Clusterware 2.0 - Grid Infrastructure by Al...
UTHOC2 - Under The Hood of Oracle Clusterware 2.0 - Grid Infrastructure by Al...
 
Demystifying Oracle RAC Workload Management by Alex Gorbachev, Pythian | NoCO...
Demystifying Oracle RAC Workload Management by Alex Gorbachev, Pythian | NoCO...Demystifying Oracle RAC Workload Management by Alex Gorbachev, Pythian | NoCO...
Demystifying Oracle RAC Workload Management by Alex Gorbachev, Pythian | NoCO...
 
MOW2010: 1TB MySQL Database Migration and HA Infrastructure by Alex Gorbachev...
MOW2010: 1TB MySQL Database Migration and HA Infrastructure by Alex Gorbachev...MOW2010: 1TB MySQL Database Migration and HA Infrastructure by Alex Gorbachev...
MOW2010: 1TB MySQL Database Migration and HA Infrastructure by Alex Gorbachev...
 
MOW2010: Under the Hood of Oracle Clusterware by Alex Gorbachev, Pythian
MOW2010: Under the Hood of Oracle Clusterware by Alex Gorbachev, PythianMOW2010: Under the Hood of Oracle Clusterware by Alex Gorbachev, Pythian
MOW2010: Under the Hood of Oracle Clusterware by Alex Gorbachev, Pythian
 
Oracle ASM 11g - The Evolution
Oracle ASM 11g - The EvolutionOracle ASM 11g - The Evolution
Oracle ASM 11g - The Evolution
 
Oracle 11g New Features Out-of-the-Box by Alex Gorbachev (from Sydney Oracle ...
Oracle 11g New Features Out-of-the-Box by Alex Gorbachev (from Sydney Oracle ...Oracle 11g New Features Out-of-the-Box by Alex Gorbachev (from Sydney Oracle ...
Oracle 11g New Features Out-of-the-Box by Alex Gorbachev (from Sydney Oracle ...
 

Recently uploaded

[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality AssuranceInflectra
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demoHarshalMandlekar2
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Farhan Tariq
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...Wes McKinney
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfIngrid Airi González
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Strongerpanagenda
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsRavi Sanghani
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesThousandEyes
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Mark Goldstein
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditSkynet Technologies
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesKari Kakkonen
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...AliaaTarek5
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI AgeCprime
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 

Recently uploaded (20)

[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demo
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdf
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and Insights
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance Audit
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examples
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI Age
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 

Benchmarking Oracle I/O Performance with Orion by Alex Gorbachev

  • 1. Benchmarking Oracle I/O Performance with ORION Alex Gorbachev Ottawa, ON 4-Feb-2013
  • 2. Alex Gorbachev • CTO, The Pythian Group • Blogger • OakTable Network member • Oracle ACE Director • BattleAgainstAnyGuess.com • IOUG, Director of Communities 2 © 2011-2012 Pythian
  • 3. Why Pythian Recognized Leader: • Global industry-leader in remote database administration services and consulting for Oracle, Oracle Applications, MySQL and SQL Server • Work with over 150 multinational companies such as Forbes.com, Fox Sports, Nordion and Western Union to help manage their complex IT deployments Expertise: • One of the world’s largest concentrations of dedicated, full-time DBA expertise. Employ 7 Oracle ACEs/ACE Directors • Hold 7 Specializations under Oracle Platinum Partner program, including Oracle Exadata, Oracle GoldenGate & Oracle RAC Global Reach & Scalability: • 24/7/365 global remote support for DBA and consulting, systems administration, special projects or emergency response © 2011-2012 Pythian We are a managed services, consulting and solution provider of elite database and system administration skills in Oracle, MySQL and Microsoft SQL Server environments.
  • 4. 4 © 2011-2012 Pythian Apply at hr@pythian.com
  • 5. ORION - ORacle I/O Numbers Generate I/O workload similar to database patterns & measure I/O performance 5 © 2011-2012 Pythian
  • 6. Orion is designed to stress test the I/O subsystem 6 © 2011-2012 Pythian
  • 7. Orion isnot perfect for simulation but good enough 7 © 2011-2012 Pythian
  • 8. Use Orion before moving/ deploying databases to the new platform 8 © 2011-2012 Pythian
  • 9. Orion is used in two scenarios 9 © 2011-2012 Pythian
  • 10. You know what you need and want to ensure you have it or You have no idea what you need and want to ensure you get the best you can 10 © 2011-2012 Pythian The first one is based on capacity planning. The second you can call an infrastructure tuning
  • 11. 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 11 © 2011-2012 Pythian
  • 12. 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 12 © 2011-2012 Pythian
  • 13. 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) 13 © 2011-2012 Pythian
  • 14. 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... .............................. .............................. .............................. 14 © 2011-2012 Pythian Each Orion run performs several tests and collects metrics for each test. The set of metrics for one test is a data point. Based on the run configuration, Orion collects several data points scaling concurrency of small random IOs and concurrency of large IOs. Each data point is defined by the number of concurrent small I/O requests and the number of concurrent large IO streams. Orion iterates through concurrency of large I/Os from minimal to maximum (which can be the only one depending on the run configuration) and then for each large IO concurrency level, it iterates through concurrency levels of small IOs from minimum to maximum (which can be the only one as well depending on the run configuration). We will see how it these ranges are selected later. If you look at the matrix then you can imagine this process as running the tests row by row from top to bottom and for each row, the sequence of tests is from left to right. Just like in English writing. As Orion performs the tests, it writes the results in the trace file and at the end of the test it produces several matrix files with collected metrics.
  • 15. 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... -run advanced -matrix detailed # of tests = (Xlarge + 1) * (Xsmall + 1) 15 © 2011-2012 Pythian There are several types of runs. Let’s first look into “advanced” mode and the rest of the runs are simpler versions which present some of the parameters for you. You can think of them as wizard modes. To define which data points are collected by Orion, the matrix type is defined. Detailed matrix is the most time consuming to run - Orion will test every combination of large and small I/O workload - it will iterate from 0 concurrency level to maximum concurrency level for both large and small IOs.
  • 16. 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... -run advanced -matrix row -num_large 2 # of tests = Xsmall + 1 16 © 2011-2012 Pythian Matrix row fixes number of concurrent large I/O streams to a configurable number (can be zero) and iterates through concurrency of small IOs.
  • 17. 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... -run advanced -matrix col -num_small 3 # of tests = Xlarge + 1 17 © 2011-2012 Pythian Matrix col fixes number of concurrent small IOs to a configurable number (can be zero) and iterates through concurrency of large IO streams.
  • 18. 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... -run advanced -matrix basic # of tests = Xlarge + Xsmall + 1 18 © 2011-2012 Pythian Matrix basic performs tests of non-mixed small and large workloads. First, Orion iterates through different concurrency levels of small IOs without any large IO streams. Then, Orion iterates through concurrency of large IO streams without any small IOs.
  • 19. 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 -run advanced -matrix max # of tests = Xlarge + Xsmall + 1 19 © 2011-2012 Pythian Matrix max is similar to basic but instead of performing no large IO activity while iterating through small IOs, Orion performs maximum number of large IO streams. The same with iterating through large IO streams concurrency -- Orion will run at maximum concurrent small I/Os.
  • 20. 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... -run advanced -matrix point -num_large 2 -num_small 3 # of tests = 1 20 © 2011-2012 Pythian Matrix point is the fastest run as it runs exactly one test defined.
  • 21. 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... -run simple 21 © 2011-2012 Pythian Non-advanced runs automatically define matrix type as well as most of other parameters.
  • 22. 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... -run normal 22 © 2011-2012 Pythian Non-advanced runs automatically define matrix type as well as most of other parameters.
  • 23. 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... -run oltp 23 © 2011-2012 Pythian Non-advanced runs automatically define matrix type as well as most of other parameters.
  • 24. 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... -run dss 24 © 2011-2012 Pythian Non-advanced runs automatically define matrix type as well as most of other parameters.
  • 25. 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 25 © 2011-2012 Pythian
  • 26. Sample for -matrix detailed iops 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 lat (us) 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 mbps 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 26 © 2011-2012 Pythian Orion 11.1.0.7 and earlier reports response time in ms. 11.2.0.1+ reports latency in us (microseconds) Note how matrix is slightly different: - iops and lat matrix exclude column with zero small IOs - mbps matrix excludes row with zero large IOs
  • 27. Sample for -matrix basic iops Large/Small, 1, 2, 3, 4, 5 0, 80, 153, 165, 163, 197 1 2 lat (us) Large/Small, 1, 2, 3, 4, 5 0, 12370.09, 13060.23, 18112.16, 24448.27, 25250.33 1 2 mbps Large/Small, 0, 1, 2, 3, 4, 5 1, 31.84 2, 29.87 27 © 2011-2012 Pythian
  • 28. Trace file content ran (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 28 © 2011-2012 Pythian Separate read and write statistics. Actual write percentage is important for sequential large I/O because it assigns streams to write or read. IOPS, LAT and MBPS are actually calculated for all types of IO but matrix doesn’t report them all. Can parse trace file to extract all statistics available. Note: write stats for large sequential IO is bogus since there was no writes done.
  • 29. Concurrent I/O requests = number of outstanding I/Os Separate process for large and small I/Os 29 © 2011-2012 Pythian For each task, Orion forks 2 separate processes performing large and small IOs. If only large or only small IOs are performed then only one process is forked.
  • 30. 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 30 © 2011-2012 Pythian
  • 31. OLTP and DSS runs are impractical* • Range 20 steps with interval num_disks of concurrency is {0..max} {num_disks..num_disks*20) • 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 To much concurrency • max for large IOs • num_disks * 2 for advanced, simple and normal runs • num_disks * 15 for dss run 15 steps with interval num_disks {num_disks..num_disks*15) * 11.2.0.3 behavior 31 © 2011-2012 Pythian
  • 32. 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} Defines input file with the -size_large {Kb} list of disks {testname}.lun -type rand|seq in the current directory -num_small {num} # cat mytest.lun -size_small {Kb} -simulate concat|raid0 /dev/sdc -stripe {Mb} /dev/sdd -write {%} /dev/sde -cache_size {MB} -verbose 32 © 2011-2012 Pythian This is the full command-line syntax. The two parameters that are always required are -testname and - run. -testname identifies the only input file that Orion needs with the list of disks - each disk is a path on the new line. The file name must be testname with added .lun extension and the file must be in the current directory. Orion will also prefix the output results with testname. -run defines types of Orion run and the rest of parameters depend on it.
  • 33. 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 this is preset this can’t be this can be set 33 © 2011-2012 Pythian For -run normal, Orion sets most of the parameters to predefined value and you can only specify -num_disks, -cache_size and - verbose.
  • 34. 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 this is preset this can’t be this can be set 34 © 2011-2012 Pythian -run simple has identical settings but the the -matrix is basic.
  • 35. 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 {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 this is preset this can’t be this can be set 35 © 2011-2012 Pythian -run oltp (make sure it’s lower case) lets you specify most of the other parameters but you really only need to care about parameters affecting small IOs. Defaults are used if you don’t define a specific value.
  • 36. 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 {num} -size_small {Kb} -simulate concat|raid0 -stripe {Mb} -write {%} -cache_size {MB} -verbose this is preset this can’t be this can be set 36 © 2011-2012 Pythian -run dss (make sure it’s lower case) lets you specify most of the other parameters (except switching to sequential large IO streams) but parameter controlling small IOs don’t matter. Defaults are used if you don’t define a specific value.
  • 37. 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 this is preset this can’t be this can be set 37 © 2011-2012 Pythian Run -advanced is the most flexible mode and depending on the matrix type selected, most of the parameters can be specified. When selecting -matrix detailed, basic or max, Orion selects concurrency ranges for large and small IOs based on -num_disks so -num_large and -num_small cannot be set explicitly.
  • 38. 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 this is preset this can’t be this can be set 38 © 2011-2012 Pythian When selecting -matrix col (for column), you must specify - num_small to define the column of data points to collect while - num_large is not relevant.
  • 39. 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 this is preset this can’t be this can be set 39 © 2011-2012 Pythian -matrix row is reverse to col - you must specify -num_large to define the row of data points to collect while -num_small is not relevant.
  • 40. 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 this is preset this can’t be this can be set 40 © 2011-2012 Pythian To specify -matrix point, you need to explicitly set both - num_small and -num_large to identify the data point to collect.
  • 41. 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 Great way to -num_streamIO {num} simulate ASM -size_large {Kb} -num_small {num} striping -size_small {Kb} -simulate concat|raid0 -stripe {Mb} -write {%} -cache_size {MB} -verbose 41 © 2011-2012 Pythian Parameter -simulate controls how Orion treats multiple disks and it has two options: 1. “concat” - all disks are concatenated sequentially into one single virtual disk against which Orion submits IO requests. 2. “raid0” - Orion organizes a sing virtual disk by striping across all disks defined in the testname.lun file using stripe size that can be set by -stripe parameter (default 1Mb). This is the best way to simulate ASM striping.
  • 42. 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 42 © 2011-2012 Pythian Parameter -type controls large IO pattern: 1. “rand” - Orion performs large IOs across randomly selecting the offset for each IO request from the whole virtual disk. 2. “seq” - Orion establishes multiple sequential IO streams starting from predefined offsets of the virtual disk (that produced by concatenating or striping). The starting offsets are selected at the beginning of each test by splitting the virtual disks in equal chunks of number of concurrent stream.
  • 43. Orion Sequential I/O e t on wai ule d e h ed st an on ait Sc ue le w q e du and re ch est IO S u q re e one IO Sc hedul d wait st an IO reque -num_streamIO 1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 -num_streamIO 4 1 1 1 1 2 2 2 2 3 3 3 3 4 4 4 4 5 5 5 Sch Sch IO re edule fo IO re edule fo Sch ques u ques u ts an r IO re edule fo ts an r d wa ques u d wa it ts an r it d wa it 43 © 2011-2012 Pythian Each stream can also have multiple IO threads simulated (and by default there are 4 threads). Thus when you are testing sequential large IO, your real number of concurrent IO requests might actually by much higher than you think because of default value for -num_streamIO set to 4.
  • 44. What I/O in Oracle behaves like -num_streamIO 4? *n • Some examples: ee ds • serial direct parallel read ve r ifi • ARCH reads of redo logs ca tio • some operations with temporary segments n * • How do you verify/know? • Enable 10046 trace and OS trace (strace/truss/tusc) 44 © 2011-2012 Pythian
  • 45. Orion Flexibility (Inflexibility?) • 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 45 © 2011-2012 Pythian Orion has lots of flexibility in the settings. However, for a single run there is very limited control on data points collected. Variation of any settings other then concurrency requires separate Orion runs. When simulating more complex scenarios, you would also need to combine multiple run and make sure they are running in sync. To simplify synchronization, you would use -matrix point. Otherwise, sync different data points is a nightmare especially that Orion can’t be used to collect the same data point multiple times over and over in the same run while another run (or runs) iterates through other data points.
  • 46. 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 46 © 2011-2012 Pythian Instead of using “-run oltp” use advanced run settings. This run will simulate random reads that foreground processes are doing as well as background random writes performed by DBWR. One almost universally good variation to drill into is write percentage - this will let you assess how well I/O subsystem can handle random writes as opposed to random reads. These tests usually show that no matter what storage vendors claim about their super smart storage arrays and caching algorithms, sustained random writes ruin any parity based mirroring.
  • 47. Scenarios: OLTP traffic visualization Oracle Database Appliance example ODA: Small IOPS scalability / HDDs 5,000 25 IOPS Response Time 4,000 20 IO Response Time, ms 3,000 15 Throughput, IOPS 2,000 10 1,000 5 0 0 1 2 3 4 5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100 47 © 2011-2012 Pythian This is an example of the first Orion run of Oracle Database Appliance to assess OLTP traffic scalability for read only workload.
  • 48. Scenarios: OLTP traffic variation analysis Varying write percentage in ODA Small IOPS by writes percentage Oracle Database Appliance / OLPT / whole HDDs 7,000 80 6,000 70 60 5,000 IO Response Time, ms Throughput, IOPS 50 4,000 40 3,000 30 2,000 20 1,000 10 0 0 20 40 60 80 100 120 140 160 180 200 220 240 260 280 300 320 340 360 380 400 Concurrent IO requests 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% 48 © 2011-2012 Pythian Now let’s introduce variable write percentage and assess the impact. Because ODA doesn’t use any RAID technology, we see almost no degradation. However, since ASM will be doing host based tripple mirroring (for this purpose comparable to RAID1), this IOPS metrics are from disks perspective and not from the database perspective. We need to adjust IOPS and write percentage to see the numbers from database perspective after ASM mirroring.
  • 49. Scenarios: OLTP traffic variation analysis Write percentage adjusted for ASM mirroring Small IOPS by writes percentage Oracle Database Appliance / OLPT / whole HDDs 7,000 80 6,000 70 60 5,000 IO Response Time, ms Throughput, IOPS 50 4,000 40 3,000 30 2,000 20 1,000 10 0 0 20 40 60 80 100 120 140 160 180 200 220 240 260 280 300 320 340 360 380 400 Concurrent IO requests 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% 49 © 2011-2012 Pythian This is the adjusted IOPS and percentage values.
  • 50. Impact of writes on RAID5 is huge 40% writes => 4 times lower IOPS 50 © 2011-2012 Pythian Here is an explicit example of RAID5 shortcomings.
  • 51. Same disks reconfigured as RAID1+0 40% writes => less than 50% hit 51 © 2011-2012 Pythian Much less writes impact with RAID10 which actually becomes noticeable closer to saturation point anyway.
  • 52. Scenarios: Data Warehouse queries • -runadvanced -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 52 © 2011-2012 Pythian To simulate data warehousing workload from concurrent users use read only workload with random large reads. Even though individual queries might be scanning tables in more sequential manner, the high concurrency level makes them look like random. Environments with low concurrency levels will probably look more like multiple sequential scan streams. For data warehouse performance you are normally interested in the scan throughput measured as MB per second.
  • 53. Scenarios: Data Warehouse IO visualization Large IOs throughput 300 225 Throughput, MBPS 150 75 0 1 2 4 6 8 10 12 14 18 20 22 24 26 28 30 32 Concurrent threads 53 © 2011-2012 Pythian Simple way to visualize. You could also add throughput per reading stream to see performance that each user doing serial scans will get, for example.
  • 54. Scenarios: RMAN backup • -runadvanced -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 54 © 2011-2012 Pythian No backup compression overhead accounted for. Orion will be actually more aggressive sending IO requests because it will keep either writing non-stop or reading non-stop while an RMAN process needs to read and write, read and write, read ...
  • 55. 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 55 © 2011-2012 Pythian
  • 56. Scenarios: LGWR writes visualization ODA SSD sequential 32K IO streams (tripple mirroring) 8000 1.00 6400 0.80 Average Response time, ms Writes per second 4800 0.60 3200 0.40 1600 0.20 0 0 2 4 6 8 10 12 14 16 Concurrent Threads IOPS Response Time, ms 56 © 2011-2012 Pythian Because you can’t throttle down each thread, each thread will go as fast as it can so you you always pushing some kind of a limit and you will be throttled by the maximum what an I/O subsystem can deliver or by CPU but Orion consumes very little CPU so you ignore it.
  • 57. Combining different workloads • Startmultiple 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 Cannot schedule a run Cannot throttle IO other with repetitive data points than controlling number - must schedule multiple of outstanding IOs consecutive runs 57 © 2011-2012 Pythian Combining multiple runs is only reliable if using -matrix point.
  • 58. EC2 large 5 EBS disks: first run to test scalability Initial OTLP test with 5 disks and 20% writes 1,500 20 IOPS Response time, ms 1,125 15 Average response time, ms IOPS 750 10 375 5 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 Number of concurrent IOs 1 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 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 58 © 2011-2012 Pythian My initial run gives me general idea how my subsystem would scale under different OLTP load with 20% writes. If I’m curios, I might go further and perform few runs with different write percentage and visualize the difference.
  • 59. 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 59 © 2011-2012 Pythian The first commented out command I used to assess initial scalability and build the run visualized on the previous slide. I then take it and convert to “OLTP point” and run it. Next step I add “Adding LGWR” to run in parallel. After that I add ARCH and collect another data point and etc. Note that they are all starting at the same time and run in parallel in the background and the script waits for all background jobs to complete at the end using “wait” command.
  • 60. EC2... visualizing combined workload impact 150 75 LGWR writes per second 120 60 LGWR write, ms 90 45 60 30 30 15 0 0 OLTP IOPS Response time, ms LGWR writes LGWR write, ms 1500 20 Response time, ms 1200 16 900 12 IOPS 600 8 300 4 0 0 y R N1 N4 OLT P onl +LGW +ARC H RMA RMA OLTP +LGWR +LG WR+ +LG WR+ OLTP OLTP OLTP OLTP IOPS Response time, ms LGWR writes LGWR write, ms OLTP only 1306 7.7 OLTP +LGWR 1239 8.1 139 7.1 OLTP+LGWR+ARCH 576 17.4 17 56.0 OLTP+LGWR+RMAN1 778 12.8 38 26.1 OLTP+LGWR+RMAN4 571 17.5 49 20.3 60 © 2011-2012 Pythian I can then record how my OLTP traffic is affected in different scenarios including LGWR performance.
  • 61. The best Orion 11.2 new feature Histograms! Bucket LGWR no LGWR with no ARCH ARCH 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 with ARCH 4096 - 8192 845 0 8192 - 16384 1406 2 16384 - 32768 1115 161 32768 - 65536 161 699 65536 - 131072 4 169 0 - 128 128 - 256 256 - 512 512 - 1024 1024 - 2048 2048 - 4096 4096 - 8192 8192 - 16384 16384 - 32768 32768 - 65536 65536 - 131072 131072 - 262144 262144 - 524288 524288 - 1048576 1048576 - 2097152 131072 - 262144 0 17 262144 - 524288 1 10 524288 - 1048576 0 2 1048576 - 2097152 0 1 61 © 2011-2012 Pythian
  • 62. Got RAC? Schedule parallel runs on each node HP blades HP Virtual Connect Flex10 Big NetApp box 100 disks 62 © 2011-2012 Pythian
  • 63. Example of Failed Expectations NetApp NAS, 1 Gbit Ethernet, 42 disks 5000 30.0 4000 Read only 22.5 Latency, ms 3000 IOPS 15.0 2000 7.5 1000 0 0 1 2 3 4 5 10 20 30 40 50 60 70 80 90 100 IOPS Latency 5000 50 4000 40 Read write Latency, ms 3000 30 IOPS 2000 20 1000 10 0 0 1 2 3 4 5 10 20 30 40 50 60 70 80 90 100 63 © 2011-2012 Pythian
  • 64. Tune-Up Results Switched from Intel to Broadcom NICs and disabled snapshots IOPS Latency 10000 12 10 8000 8 Latency, ms 6000 IOPS 6 4000 4 2000 2 0 0 1 2 3 4 5 10 20 30 40 50 60 70 80 90 100 15000 8 12500 6 10000 Latency, ms IOPS 7500 4 5000 2 2500 0 0 1 2 3 4 5 10 20 30 40 50 60 70 80 90 100 64 © 2011-2012 Pythian
  • 65. Possible “What-If” scenarios • 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 65 © 2011-2012 Pythian
  • 66. Concurrent IOs on axis X is not always the best... ODA: Small IOPS scalability and data placement / HDDs 6,000 25 IOPS whole disk IOPS outside 40% IOPS inside 60% Latency whole disk Latency outside 40% Latency inside 60% 4,800 20 IO Response Time, ms Throughput, IOPS 3,600 15 2,400 10 1,200 5 0 0 1 2 3 4 5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100 66 © 2011-2012 Pythian
  • 67. Smarter presentation 50% IOPS at the same response time ODA: Improving IO throughput by data placement 6000 4800 3600 IOPS 2400 whole disk 1200 outside 40% inside 60% 0 0 5 10 15 20 25 IO response time 67 © 2011-2012 Pythian
  • 68. 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 68 © 2011-2012 Pythian
  • 69. Beware of thin provisioning and other NAS magic • Smart storage technologies play bad jokes • If in doubt - “initialize” disks with non-zeroes 69 © 2011-2012 Pythian
  • 70. Orion 11.2 Included in • Database • Grid home • Client (tested Administrative option) Dependencies 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 70 © 2011-2012 Pythian
  • 71. 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 71 © 2011-2012 Pythian
  • 72. Visualization is the Key 72 © 2011-2012 Pythian
  • 73. Thank you and Q&A To contact us… sales@pythian.com or hr@pythian.com 1-866-PYTHIAN gorbachev@pythian.com To follow us… http://www.pythian.com/news/ http://www.facebook.com/pages/The-Pythian-Group/ http://twitter.com/pythian http://www.linkedin.com/company/pythian 73 © 2011-2012 Pythian