Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Oracle Database Cloud Performance Doag 2016

571 views

Published on

My presentation "Oracle Database Cloud Performance" at DOAG 2016

  • Be the first to comment

  • Be the first to like this

Oracle Database Cloud Performance Doag 2016

  1. 1.  Independent consultant  Performance Troubleshooting  In-house workshops  Cost-Based Optimizer  Performance By Design  Oracle ACE Director  Member of OakTable Network
  2. 2. http://oracle-randolf.blogspot.com
  3. 3. https://www.youtube.com/c/RandolfGeist
  4. 4. https://community.oracle.com/welcome
  5. 5.  Oracle Cloud extended trial license as part of Oracle ACE Director program  Trial license comes with limitations / resource quotas: - 1TB max storage - max 6 OCPUs (more details later) - max 5 IP Endpoints  Performance tests conducted within these limits
  6. 6.  No “hardware” performance difference between different editions measurable – all created services show similar performance characteristics in terms of CPU and I/O capabilities  Different performance still possible on software level – Diagnostic + Tuning Pack features (e.g. SQL Tuning advisor), InMemory Column Store etc.
  7. 7.  Services can be scaled by adding more CPUs, RAM and storage  Currently no online operation, other Cloud providers can do some of these scaling activities online
  8. 8.  Tablespace encryption mandatory  Network access rules, by default public access disabled, only access via SSH possible
  9. 9. 4 OCPUs configuration
  10. 10. Architecture: x86_64 CPU op-mode(s): 32-bit, 64-bit Byte Order: Little Endian CPU(s): 8 On-line CPU(s) list: 0-7 Thread(s) per core: 2 Core(s) per socket: 4 Socket(s): 1 NUMA node(s): 1 Vendor ID: GenuineIntel CPU family: 6 Model: 79 Model name: Intel(R) Xeon(R) CPU E5-2686 v4 @ 2.30GHz Stepping: 1 CPU MHz: 2300.062 BogoMIPS: 4600.12 Hypervisor vendor: Xen Virtualization type: full L1d cache: 32K L1i cache: 32K L2 cache: 256K L3 cache: 46080K NUMA node0 CPU(s): 0-7
  11. 11. 0 10 20 30 40 PLSQL8 PLSQL4 SQLLIO8 SQLLIO4 35.8 34 31.1 29.9 AVG_DURATION 0 10 20 30 40 50 60 70 PLSQL8 PLSQL4 SQLLIO8 SQLLIO4 60.5 36 47.4 22.7 AVG_DURATION ORACLE DBAAS AMAZON RDS Average duration of a CPU bound database operation, running 4 and 8 threads SQLLIO: Burns CPU via SQL logical I/Os (SQL engine) PLSQL: Burns CPU via PL/SQL computation (PL/SQL engine)
  12. 12.  Disks exposed via XEN disk storage devices (paravirtualized XEN disk drivers /dev/xvd*) and then via device mapper and LVM  Single Instance: ext4 Filesystem, asynchronous and direct I/O enabled by default  RAC: ASM plus ACFS on top
  13. 13. Average read IOPS figures over several days 4 / 8 threads, 4KB/8KB/16KB blocksize, maximum physical, asynchronous I/O TEST AVG_IOPS 4THREADS_4K 43900 8THREADS_4K 55760 4THREADS_8K 37748 8THREADS_8K 38986 4THREADS_16K 28631 8THREADS_16K 30264 TEST AVG_IOPS 4THREADS_4K 58968 8THREADS_4K 60943 4THREADS_8K 50945 8THREADS_8K 58740 4THREADS_16K 30670 8THREADS_16K 40330 Single Instance 4 OCPUs / 8 Cores/Threads RAC Two Instances 2 + 2 OCPUs / 4 + 4 Cores/Threads
  14. 14.  General Purpose SSD: Less than 1TB allocated: Peak: 3.000 IOPS for max. 30 minutes Then throttled to something between 100 IOPS and less than 3.000 IOPS depending on amount of storage allocated I/O credits re-load over time, determine the possible IOPS peak between baseline and 3.000 IOPS  Provisioned IOPS: Maximum 30.000 IOPS
  15. 15. Premium SSD: Maximum 5.000 IOPS per storage container
  16. 16. IOPS / throughput independent from allocated storage size (tested with 25GB to 1TB) !! Compare this to Amazon RDS where you need at least 3TB of storage to get maximum 30.000 IOPS for “Provisioned IOPS” premium storage
  17. 17. Maximum throughput Single instance: 640MB / sec read 120MB / sec write Two instances RAC: 1100MB / sec read 80MB / sec write
  18. 18. I/O Latency - Synchronous I/O 8KB blocksize / 8 threads (“db file sequential read”) WAIT_TIME COUNT PERCENT PERCENT_GRAPH <= 256 microseconds 302062 3,1 <= 512 microseconds 7013211 71,1################# <= 1 millisecond 2489938 25,2###### <= 2 milliseconds 50799 0,5 <= 4 milliseconds 4149 0 <= 8 milliseconds 1102 0 <= 16 milliseconds 224 0 <= 32 milliseconds 195 0 <= 65 milliseconds 73 0 <= 131 milliseconds 20 0 <= 262 milliseconds 16 0
  19. 19. I/O Latency “General Purpose SSD” - Synchronous I/O 8KB blocksize / 8 threads (“db file sequential read”) WAIT_TIME COUNT PERCENT PERCENT_GRAPH <= 256 microseconds 152 0 <= 512 microseconds 7150 0,4 <= 1 millisecond 1911 0,1 <= 2 milliseconds 6553 0,4 <= 4 milliseconds 1817362 99################ <= 8 milliseconds 1492 0,1 <= 16 milliseconds 1006 0,1
  20. 20.  Four different tests performed over several days - PL/SQL CPU burning loop (PL/SQL engine) - SQL logical I/O CPU burning - Maximum physical asynchronous I/O - read - Maximum physical asynchronous I/O - write  Comparison to dedicated physical host, four cores, Samsung SSD vs. Oracle DBaaS eight cores
  21. 21. Test 1: PL/SQL CPU burning loop, executed as many times as CPUs available declare n number; begin loop n := 0; for i in 1..1000000000 loop n := n + 1; end loop; insert into timings(testtype, thread_id, ts) values ('PLSQL', &thread_id, systimestamp); commit; end loop; end; /
  22. 22. DBaaS overall: Physical host overall:
  23. 23. DBaaS per day: Physical host per day:
  24. 24. DBaaS threads: Physical host threads:
  25. 25. Test 2: SQL logical I/O CPU burning, executed as many times as CPUs available alter session set "_old_connect_by_enabled" = true; declare n number; begin loop select count(*) X into n from kill_cpu&tabname connect by n > prior n start with n = 1; insert into timings(testtype, thread_id, ts) values ('SQLLIO', &thread_id, systimestamp); commit; end loop; end; /
  26. 26. DBaaS overall: Physical host overall:
  27. 27. DBaaS per day: Physical host per day:
  28. 28. DBaaS threads: Physical host threads:
  29. 29. Test 3: Maximum physical asynchronous I/O – read only, minimum buffer cache, CPU times declare n number; begin loop select /*+ leading(t_o) use_nl(t_i) index(t_o) index(t_i) */ sum(t_i.n) into n from t_o , t_i&tabname t_i where t_o.id_fk = t_i.id; insert into timings(testtype, thread_id, ts) values ('&testtype', &thread_id, systimestamp); commit; end loop; end; /
  30. 30. DBaaS overall: Physical host overall:
  31. 31. DBaaS per day: Physical host per day:
  32. 32. DBaaS threads: Physical host threads:
  33. 33. Test 4: Maximum physical asynchronous I/O – read-write, minimum buffer cache, CPU times begin loop for rec in ( select /*+ index(t_o) */ id_fk from t_o ) loop update t_i&tabname t_i set n = rec.id_fk where id = rec.id_fk; end loop; insert into timings(testtype, thread_id, ts) values ('&testtype', &thread_id, systimestamp); commit; end loop; end; /
  34. 34. DBaaS overall: Physical host overall:
  35. 35. DBaaS per day: Physical host per day:
  36. 36. DBaaS threads: Physical host threads:
  37. 37. DBaaS events: Physical host events:
  38. 38. http://oracle-randolf.blogspot.com/search/label/DBaaS
  39. 39. Q & A
  40. 40. I/O Latency - Synchronous I/O 16KB blocksize / 8 threads (“db file sequential read”) WAIT_TIME COUNT PERCENT PERCENT_GRAPH <= 256 microseconds 20289 0,3 <= 512 microseconds 3333341 45,6############## <= 1 millisecond 3607797 49,3############### <= 2 milliseconds 289636 4# <= 4 milliseconds 64954 0,9 <= 8 milliseconds 1412 0 <= 16 milliseconds 179 0 <= 32 milliseconds 179 0 <= 65 milliseconds 72 0 <= 131 milliseconds 31 0 <= 262 milliseconds 5 0 <= 1 second 2 0

×