SlideShare a Scribd company logo
Proving out Flash Storage Array Performance using Swingbench and SLOB
Kapil Goyal, Fidelity Investments
@kapil_goyal
Who am I?
 Lead for Oracle database performance team at Fidelity Investments
 Worked with Oracle Consulting and got exposure to many different
companies' database performance challenges
 Speaker at ECO, BIWA, DOUG, Hostos, Enkitec Expo, IOUG and AIOUG
 Published articles for DOUG and IOUG SELECT magazine
 Certified OCP DBA 8i to 11g
Storage Fundamentals
• IOPS
• Throughput
• Latency
• SAN connectivity
• SAN Cache
IOPS
• # of distinct Input/Output operations (reads or writes) per second
• Several vendors advertise "just" higher IOPS, sort of meaning less without
other metrics like
• Latency
• Block Size - 2k, 4k, 8k, 16k, 32k...?
• Read write ratio
Latency
• A measure of the time required for a sub-system or a component in that sub-system to
process a single storage transaction or data request
• Latency matters!!
• Varies by block size
Latency
• DB level latency can be in sub ms still with spinning drives
Reference - http://carymillsap.blogspot.com/2009/02/dang-it-people-theyre-syscalls-not.html
• Wait event is SYSCALL
• Db file sequential read – pread call (linux)
• wait n. In an Oracle context, the approximate response time of what is usually a
single operating system call (syscall) executed by an Oracle kernel process.
• SAN Cache
• FS Cache
• Oracle data doesn’t show IO queue at OS level
• Oracle has no visibility if IO got serviced by FS cache, SAN cache or by spinning
drive
Throughput
• How much data can be transferred from one location to another in a
given amount of time
Or
• MegaBytes/Second
• Important for large scans/sequential reads
SAN connectivity fundamentals
• Zoning
• Port base
• WWN base
Does your Database need Flash Storage?
• Is your database IO sensitive?
• Does it need consistent and low latency?
• Does it currently have high latency and driving a lot of IO?
• Database server CPU starved?
• 3 offerings depending upon workload:
• Hybrid Storage with spinning drives with Cache (RAM or FLASH)
• All Flash arrays
• Exadata
AFA (All Flash Array) POC – Choose the right tool
Reference - https://www.pythian.com/blog/oracle-database-load-testing-tools-overview/
• Tools available:
• Orion (Oracle IO numbers)
• Winsat
• Iometer
• HammerDB
• Oracle RAT (Real Application Testing)
• LoadRunner
• SLOB
• Swingbench
• ..
• ..
• SLOB – For IOPS (To Test Physical IO)
• Swingbench
• Order Entry - introduces heavy contention on a small number of
tables and is designed to stress interconnects and memory
• Sales History - to test the performance of complicated queries when
run against large tables.
Tools we picked
• SLOB – For IOPS (To Test Physical IO)
• Swingbench
• Order Entry - introduces heavy contention on a small number of
tables and is designed to stress interconnects and memory
• Sales History - to test the performance of complicated queries when
run against large tables.
Tools we picked
• 2 Linux physical servers:
• Dell PowerEdge R630
– Intel(R) Xeon(R) CPU E5-2660 v3 @ 2.60GHz (Haswell) – 20 Cores
– 378G RAM, RAM Speed - DDR4 384G (24x16g dimms) @1866@MHz
– HBA – QLogic QLE2662 16Gb FC Adapter
• What max throughput we can drive on each box – ~3200 MBPS
• 2 node RAC ASM 12.1 Database
Oracle Parameter Swingbench SLOB
SGA_TARGET 15G 2G
SGA_MAX_SIZE 15G 15G
PGA_AGGREGATE_TARGET 100G 100G
PGA_AGGREGATE_LIMIT 200G 200G
JOB_QUEUE_PROCESSES 80 80
PARALLEL_MAX_SERVERS 552 552
PARALLEL_MIN_SERVERS 288 288
REDO CONFIGURATION 10 Groups(min). 1GB each. 10 Groups(min). 1GB each.
TEMP TABLESPACE 200GB 200GB
Environment Details
SLOB
Reference- https://kevinclosson.net/slob/
• IO workload generation toolkit
• Supports following testing
• Oracle Logical Read scaling
• Physical random single block read (db file sequential read wait
event)
• Random single block writes (DBWR flushing capacity)
• Redo logging IO
• Best tool to test IO subsystem
SLOB
• Create ~500GB dataset (256 SLOB schemas each 2 GB)
• Ran several tests with different # of users - 2,4,8,16,32,64,92,128,160,192,224 and 256
Initial Setup
https://kevinclosson.net/2014/08/04/slob-deployment-a-picture-tutorial/
• Create a tablespace for SLOB
• Run setup.sh - To load SLOB schemas
• Execute runit.sh - to run real tests
Slob.conf
UPDATE_PCT= 0 to 50 -–Update Activity
RUN_TIME=1800 --seconds
WORK_LOOP=0
SCALE=256000 --Numbers of Blocks
WORK_UNIT=64
REDO_STRESS=HEAVY #LITE
LOAD_PARALLEL_DEGREE=4
# Settings for SQL*Net connectivity:
ADMIN_SQLNET_SERVICE=slob_poc5
SQLNET_SERVICE_BASE=slob_poc5
#SQLNET_SERVICE_MAX=2
#SYSDBA_PASSWD=xxxxx
SYSDBA_PASSWD=manager
SLOB Test Setup
oracle@hostname:poc51> srvctl status service -d poc5_wlk
Service slob_poc5 is running on instance(s) poc51,poc52
Service slob_poc51 is running on instance(s) poc51
Service slob_poc52 is running on instance(s) poc52
tnsnames.ora
slob_poc51 = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST =xxxx)(PORT = 1521)) (CONNECT_DATA =
(SERVER = DEDICATED) (SERVICE_NAME = slob_poc51)))
slob_poc52 = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = xxxx)(PORT = 1521)) (CONNECT_DATA =
(SERVER = DEDICATED) (SERVICE_NAME = slob_poc52)))
slob_poc5 = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = xxxx)(PORT = 1521)) (CONNECT_DATA =
(SERVER = DEDICATED) (SERVICE_NAME = slob_poc5)))
Test it
sqlplus user1/user1@slob1 <<EOF
show parameter instance_name
EOF
sqlplus user1/user1@slob2 <<EOF
show parameter instance_name
EOF
Some underbar parameter
simple.ora
# The following are needed to force db file sequential read. Omit for direct path short
scans.
# If you would like to investigate a blend of short scans mixed with single-block
random I/O
# then comment out these three parameters :
_db_block_prefetch_limit = 0
_db_block_prefetch_quota = 0
_db_file_noncontig_mblock_read_count = 0
SLOB Caveat
• It overwrites logs
• Best for IOPS test but not good for driving high throughput
Runit wrapper script
Runit wrapper script
Better naming convention
Doesn’t overwrite files
Make Buffer Cache
small to stress IO
subsystem
IOPS/MBPS script
Number of Number of Total Number of Number of Total Total Total
DATE_TIME DATE_TIME Small reads Small writes Small IOPS large reads large writes Large IOPS MBPS read MBPS written Total MBPS Total IOPS
-------------------- -------------------- ------------ ------------- ----------- ------------ ------------- ----------- ---------- ------------- ---------- ----------
02/05/18_00_19_00_21 02/05/18_00_19_00_21 222 2716 2938 18 14 32 16 35 51 2970
02/05/18_00_21_00_51 02/05/18_00_21_00_51 70374 32138 102512 222 694 916 769 931 1700 103429
..
..
02/05/18_07_51_08_56 02/05/18_07_51_08_56 18 3 21 1738 10 1748 1728 2 1730 1769
Throughput = IOPS x I/O size
In what case IOPS
and Throughput
could be same?
Other tools – db_capacity.sql
• Leverages google chart
• Thanks to Mauro and Carlos for help 
Other tools – db_capacity.sql
Other tools – db_capacity.sql
Other tools – db_capacity.sql
Update% - 10 (To change read/write ratio)
Update% - 10 (To change read/write ratio)
0
1000
2000
3000
4000
2 4 8 16 32 64 96 128 224 256
# of SLOB Sessions
MBPS
MBPS
0
100000
200000
300000
400000
2 4 8 16 32 64 96 128 224 256
# of SLOB Sessions
IOPS
IOPS
0
1
2
3
4
5
2 4 8 16 32 64 96 128 224 256
ms
# of SLOB Sessions
Single Block Read Latency (ms)
Avg
Max
0
2
4
6
8
2 4 8 16 32 64 96 128 224 256
ms # of SLOB Sessions
log file parallel write (ms)
Avg
Max
Update% - 10 (To change read/write ratio)
27082
49337
90660
163114
292842
347478 345245
323205 326606 325784
0.39 0.43 0.47 0.51 0.56
1.02
1.57
2.23
3.62
4.04
0
0.5
1
1.5
2
2.5
3
3.5
4
4.5
0
50000
100000
150000
200000
250000
300000
350000
400000
2 4 8 16 32 64 96 128 224 256
Rd
RdLatency(ms)
IOPS
# of SLOB Sessions IOPS Rd Latency(ms)
Swingbench testing (Throughput)
 Shwizard to build Sales History Schema
 500GB schema was created (with range partition)
 Several tests (SH) were run with different parallel/Index settings
 Swingbench config info
• NumberOfUsers 16
• MinDelay 0
• MaxDelay 0
• InterMinDelay 1000 ms
• InterMaxDelay 2000 ms
• RunTime 1h:5 min
• StatsCollectionStart 0:4 min
• StatsCollectionEnd 1h:4 min
http://dominicgiles.com/swingbench.html
Xml config file
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<SwingBenchConfiguration xmlns="http://www.dominicgiles.com/swingbench/config">
<Name>Sales History</Name>
<Comment>Configuration file for the Sales History Benchmark</Comment>
<Connection>
<UserName>sh_500</UserName>
<Password>sh_500</Password>
<ConnectString>//eihtlrac-scan/slob_poc5</ConnectString>
<DriverType>Oracle jdbc Driver</DriverType>
<Properties>
<Property Key="FetchSize">20</Property>
<Property Key="StatementCaching">50</Property>
<Property Key="TcpNoDelay">true</Property>
</Properties>
<InitilizationCommands>
<Command>alter session set sql_trace=false</Command>
</InitilizationCommands>
</Connection>
<Load>
<NumberOfUsers>16</NumberOfUsers>
<MinDelay>0</MinDelay>
<MaxDelay>0</MaxDelay>
<InterMinDelay>1000</InterMinDelay>
<InterMaxDelay>2000</InterMaxDelay>
<QueryTimeout>55</QueryTimeout>
<MaxTransactions>-1</MaxTransactions>
<RunTime>1:5</RunTime>
Charbench
DIR='/u01/swingbench'
BDT=$(date +%Y%m%d)
BTM=$(date +%H%M%S)
$DIR/bin/charbench -c $DIR/configs/ei_sh.xml -r ${FILE_NM}_results_${BDT}_${BTM}.xml
Output xml
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<Results xmlns="http://www.dominicgiles.com/swingbench">
<Overview>
<BenchmarkName>Sales History</BenchmarkName>
<Comment>Configuration file for the Sales History Benchmark</Comment>
<TimeOfRun>Feb 7, 2018 9:47:44 PM</TimeOfRun>
<TotalRunTime>1:00:00</TotalRunTime>
<TotalLogonTime>0:00:00</TotalLogonTime>
<TotalCompletedTransactions>40</TotalCompletedTransactions>
<TotalFailedTransactions>1</TotalFailedTransactions>
<AverageTransactionsPerSecond>0.01</AverageTransactionsPerSecond>
<MaximumTransactionRate>5</MaximumTransactionRate>
<AverageResponse>1300652.25</AverageResponse>
<MinimumResponse>632</MinimumResponse>
<MaximumResponse>3102874</MaximumResponse>
Test Summary
Vendor rating
• Support
• Security
• Reporting
• Reliability
• Performance
• Management
• Functionality
• Cost
• Storage efficiency – (Dedup, compression)
• Scalability
Appendix - A
Test case – "Spectre" and "Meltdown" vulnerability patching with BIOS update
Appendix-B db_capacity.sql
Appendix-C Stack Ranking of Oracle databases
Stack rank your databases
Database Rank IOPS GB/s Latency Cores Storage
ORAprod 1 1.5M 100 <1ms 128 100TB
ORAprod 2 1.4M 47 <1ms 128 75TB
DB2prod 3 1.3M 46 <1ms 128 75TB
ORAprod . . . . . .
DB2prod . . . . . .
SQLprod . . . . . .
ORAprod . . . . . .
DB2prod . . . . . .
SQLprod . . . . . .
ORAtest . . . . . .
DB2test . . . . . .
SQLtest . . . . . .
ORAdev . . . . . .
SQLprod . . . . . .
SQLtest . . . . . .
SQLdev 3000+ 100 1 >10ms 2 20GB
High End
Physical
High End
Virtual
Virtual
On-Prem
As-A-Service
Off-Prem
As-A-Service
80%
virtual
start
here
Enterprise wide 95th, 98th and 99th database level stats
References:
https://kevinclosson.net/slob/
https://kevinclosson.net/2014/08/04/slob-deployment-a-picture-tutorial/
http://dominicgiles.com/swingbench.html
https://www.pythian.com/blog/oracle-database-load-testing-tools-overview/
https://flashdba.com/
Q&A

More Related Content

What's hot (20)

PDF
PostgreSQL WAL for DBAs
PGConf APAC
 
PDF
Why we love pgpool-II and why we hate it!
PGConf APAC
 
PDF
Lessons PostgreSQL learned from commercial databases, and didn’t
PGConf APAC
 
PDF
Postgrtesql as a NoSQL Document Store - The JSON/JSONB data type
Jumping Bean
 
PDF
Linux tuning to improve PostgreSQL performance
PostgreSQL-Consulting
 
PDF
Problems with PostgreSQL on Multi-core Systems with MultiTerabyte Data
Jignesh Shah
 
PDF
Modern Linux Performance Tools for Application Troubleshooting
Tanel Poder
 
PDF
Get to know PostgreSQL!
Oddbjørn Steffensen
 
PDF
GNW01: In-Memory Processing for Databases
Tanel Poder
 
PDF
Streaming Replication (Keynote @ PostgreSQL Conference 2009 Japan)
Masao Fujii
 
PDF
MySQL Query Optimization
Morgan Tocker
 
PDF
Big Data and PostgreSQL
PGConf APAC
 
PDF
Moving Graphs to Production At Scale
Neo4j
 
PPTX
SQL Server In-Memory OLTP: What Every SQL Professional Should Know
Bob Ward
 
PDF
MySQL 5.7: Core Server Changes
Morgan Tocker
 
PPTX
Experience sql server on l inux and docker
Bob Ward
 
PDF
Troubleshooting Complex Performance issues - Oracle SEG$ contention
Tanel Poder
 
PPTX
Migrating to XtraDB Cluster
percona2013
 
PPT
NYJavaSIG - Big Data Microservices w/ Speedment
Speedment, Inc.
 
PDF
MyRocks Deep Dive
Yoshinori Matsunobu
 
PostgreSQL WAL for DBAs
PGConf APAC
 
Why we love pgpool-II and why we hate it!
PGConf APAC
 
Lessons PostgreSQL learned from commercial databases, and didn’t
PGConf APAC
 
Postgrtesql as a NoSQL Document Store - The JSON/JSONB data type
Jumping Bean
 
Linux tuning to improve PostgreSQL performance
PostgreSQL-Consulting
 
Problems with PostgreSQL on Multi-core Systems with MultiTerabyte Data
Jignesh Shah
 
Modern Linux Performance Tools for Application Troubleshooting
Tanel Poder
 
Get to know PostgreSQL!
Oddbjørn Steffensen
 
GNW01: In-Memory Processing for Databases
Tanel Poder
 
Streaming Replication (Keynote @ PostgreSQL Conference 2009 Japan)
Masao Fujii
 
MySQL Query Optimization
Morgan Tocker
 
Big Data and PostgreSQL
PGConf APAC
 
Moving Graphs to Production At Scale
Neo4j
 
SQL Server In-Memory OLTP: What Every SQL Professional Should Know
Bob Ward
 
MySQL 5.7: Core Server Changes
Morgan Tocker
 
Experience sql server on l inux and docker
Bob Ward
 
Troubleshooting Complex Performance issues - Oracle SEG$ contention
Tanel Poder
 
Migrating to XtraDB Cluster
percona2013
 
NYJavaSIG - Big Data Microservices w/ Speedment
Speedment, Inc.
 
MyRocks Deep Dive
Yoshinori Matsunobu
 

Similar to Proving out flash storage array performance using swingbench and slob (20)

PDF
5 Steps to PostgreSQL Performance
Command Prompt., Inc
 
PDF
Five steps perform_2009 (1)
PostgreSQL Experts, Inc.
 
PPT
MySQL Performance Tuning at COSCUP 2014
Ryusuke Kajiyama
 
PDF
Oaktable World 2014 Kevin Closson: SLOB – For More Than I/O!
Kyle Hailey
 
PDF
01 demystifying mysq-lfororacledbaanddeveloperv1
Ivan Ma
 
PDF
MySQL Performance Metrics that Matter
Morgan Tocker
 
PDF
50-Tips-for-Boosting-MySQL-Performance-CON2655.pdf
AsparuhPolyovski2
 
PPTX
Web scale MySQL at Facebook (Domas Mituzas)
Ontico
 
PPTX
Adventures in RDS Load Testing
Mike Harnish
 
PDF
NoSQL with MySQL
FromDual GmbH
 
PDF
Storage Methods for Nonstandard Data Patterns
Bob Burgess
 
PDF
Colvin exadata mistakes_ioug_2014
marvin herrera
 
PPTX
Designing Information Structures For Performance And Reliability
bryanrandol
 
PDF
Cloudcon East Presentation
br7tt
 
PDF
Cloudcon East Presentation
br7tt
 
DOC
Quick guide to PostgreSQL Performance Tuning
Ron Morgan
 
PPTX
Oracle ebs capacity_analysisusingstatisticalmethods
Ajith Narayanan
 
PDF
Evolution of DBA in the Cloud Era
Mydbops
 
PPTX
Best storage engine for MySQL
tomflemingh2
 
PDF
UKOUG 2011: Practical MySQL Tuning
FromDual GmbH
 
5 Steps to PostgreSQL Performance
Command Prompt., Inc
 
Five steps perform_2009 (1)
PostgreSQL Experts, Inc.
 
MySQL Performance Tuning at COSCUP 2014
Ryusuke Kajiyama
 
Oaktable World 2014 Kevin Closson: SLOB – For More Than I/O!
Kyle Hailey
 
01 demystifying mysq-lfororacledbaanddeveloperv1
Ivan Ma
 
MySQL Performance Metrics that Matter
Morgan Tocker
 
50-Tips-for-Boosting-MySQL-Performance-CON2655.pdf
AsparuhPolyovski2
 
Web scale MySQL at Facebook (Domas Mituzas)
Ontico
 
Adventures in RDS Load Testing
Mike Harnish
 
NoSQL with MySQL
FromDual GmbH
 
Storage Methods for Nonstandard Data Patterns
Bob Burgess
 
Colvin exadata mistakes_ioug_2014
marvin herrera
 
Designing Information Structures For Performance And Reliability
bryanrandol
 
Cloudcon East Presentation
br7tt
 
Cloudcon East Presentation
br7tt
 
Quick guide to PostgreSQL Performance Tuning
Ron Morgan
 
Oracle ebs capacity_analysisusingstatisticalmethods
Ajith Narayanan
 
Evolution of DBA in the Cloud Era
Mydbops
 
Best storage engine for MySQL
tomflemingh2
 
UKOUG 2011: Practical MySQL Tuning
FromDual GmbH
 
Ad

Recently uploaded (20)

PPTX
New ThousandEyes Product Innovations: Cisco Live June 2025
ThousandEyes
 
PPTX
Agentforce World Tour Toronto '25 - Supercharge MuleSoft Development with Mod...
Alexandra N. Martinez
 
PPTX
Designing_the_Future_AI_Driven_Product_Experiences_Across_Devices.pptx
presentifyai
 
PDF
“Computer Vision at Sea: Automated Fish Tracking for Sustainable Fishing,” a ...
Edge AI and Vision Alliance
 
DOCX
Cryptography Quiz: test your knowledge of this important security concept.
Rajni Bhardwaj Grover
 
PPTX
COMPARISON OF RASTER ANALYSIS TOOLS OF QGIS AND ARCGIS
Sharanya Sarkar
 
PDF
UiPath DevConnect 2025: Agentic Automation Community User Group Meeting
DianaGray10
 
PDF
Mastering Financial Management in Direct Selling
Epixel MLM Software
 
PPTX
Mastering ODC + Okta Configuration - Chennai OSUG
HathiMaryA
 
PPTX
Digital Circuits, important subject in CS
contactparinay1
 
PPTX
Future Tech Innovations 2025 – A TechLists Insight
TechLists
 
PDF
The 2025 InfraRed Report - Redpoint Ventures
Razin Mustafiz
 
PDF
UPDF - AI PDF Editor & Converter Key Features
DealFuel
 
PDF
NASA A Researcher’s Guide to International Space Station : Physical Sciences ...
Dr. PANKAJ DHUSSA
 
PPTX
Q2 FY26 Tableau User Group Leader Quarterly Call
lward7
 
PDF
Go Concurrency Real-World Patterns, Pitfalls, and Playground Battles.pdf
Emily Achieng
 
PPTX
Agentforce World Tour Toronto '25 - MCP with MuleSoft
Alexandra N. Martinez
 
PPTX
From Sci-Fi to Reality: Exploring AI Evolution
Svetlana Meissner
 
PDF
Peak of Data & AI Encore AI-Enhanced Workflows for the Real World
Safe Software
 
PDF
Newgen 2022-Forrester Newgen TEI_13 05 2022-The-Total-Economic-Impact-Newgen-...
darshakparmar
 
New ThousandEyes Product Innovations: Cisco Live June 2025
ThousandEyes
 
Agentforce World Tour Toronto '25 - Supercharge MuleSoft Development with Mod...
Alexandra N. Martinez
 
Designing_the_Future_AI_Driven_Product_Experiences_Across_Devices.pptx
presentifyai
 
“Computer Vision at Sea: Automated Fish Tracking for Sustainable Fishing,” a ...
Edge AI and Vision Alliance
 
Cryptography Quiz: test your knowledge of this important security concept.
Rajni Bhardwaj Grover
 
COMPARISON OF RASTER ANALYSIS TOOLS OF QGIS AND ARCGIS
Sharanya Sarkar
 
UiPath DevConnect 2025: Agentic Automation Community User Group Meeting
DianaGray10
 
Mastering Financial Management in Direct Selling
Epixel MLM Software
 
Mastering ODC + Okta Configuration - Chennai OSUG
HathiMaryA
 
Digital Circuits, important subject in CS
contactparinay1
 
Future Tech Innovations 2025 – A TechLists Insight
TechLists
 
The 2025 InfraRed Report - Redpoint Ventures
Razin Mustafiz
 
UPDF - AI PDF Editor & Converter Key Features
DealFuel
 
NASA A Researcher’s Guide to International Space Station : Physical Sciences ...
Dr. PANKAJ DHUSSA
 
Q2 FY26 Tableau User Group Leader Quarterly Call
lward7
 
Go Concurrency Real-World Patterns, Pitfalls, and Playground Battles.pdf
Emily Achieng
 
Agentforce World Tour Toronto '25 - MCP with MuleSoft
Alexandra N. Martinez
 
From Sci-Fi to Reality: Exploring AI Evolution
Svetlana Meissner
 
Peak of Data & AI Encore AI-Enhanced Workflows for the Real World
Safe Software
 
Newgen 2022-Forrester Newgen TEI_13 05 2022-The-Total-Economic-Impact-Newgen-...
darshakparmar
 
Ad

Proving out flash storage array performance using swingbench and slob

  • 1. Proving out Flash Storage Array Performance using Swingbench and SLOB Kapil Goyal, Fidelity Investments @kapil_goyal
  • 2. Who am I?  Lead for Oracle database performance team at Fidelity Investments  Worked with Oracle Consulting and got exposure to many different companies' database performance challenges  Speaker at ECO, BIWA, DOUG, Hostos, Enkitec Expo, IOUG and AIOUG  Published articles for DOUG and IOUG SELECT magazine  Certified OCP DBA 8i to 11g
  • 3. Storage Fundamentals • IOPS • Throughput • Latency • SAN connectivity • SAN Cache
  • 4. IOPS • # of distinct Input/Output operations (reads or writes) per second • Several vendors advertise "just" higher IOPS, sort of meaning less without other metrics like • Latency • Block Size - 2k, 4k, 8k, 16k, 32k...? • Read write ratio
  • 5. Latency • A measure of the time required for a sub-system or a component in that sub-system to process a single storage transaction or data request • Latency matters!! • Varies by block size
  • 6. Latency • DB level latency can be in sub ms still with spinning drives Reference - http://carymillsap.blogspot.com/2009/02/dang-it-people-theyre-syscalls-not.html • Wait event is SYSCALL • Db file sequential read – pread call (linux) • wait n. In an Oracle context, the approximate response time of what is usually a single operating system call (syscall) executed by an Oracle kernel process. • SAN Cache • FS Cache • Oracle data doesn’t show IO queue at OS level • Oracle has no visibility if IO got serviced by FS cache, SAN cache or by spinning drive
  • 7. Throughput • How much data can be transferred from one location to another in a given amount of time Or • MegaBytes/Second • Important for large scans/sequential reads
  • 8. SAN connectivity fundamentals • Zoning • Port base • WWN base
  • 9. Does your Database need Flash Storage? • Is your database IO sensitive? • Does it need consistent and low latency? • Does it currently have high latency and driving a lot of IO? • Database server CPU starved? • 3 offerings depending upon workload: • Hybrid Storage with spinning drives with Cache (RAM or FLASH) • All Flash arrays • Exadata
  • 10. AFA (All Flash Array) POC – Choose the right tool Reference - https://www.pythian.com/blog/oracle-database-load-testing-tools-overview/ • Tools available: • Orion (Oracle IO numbers) • Winsat • Iometer • HammerDB • Oracle RAT (Real Application Testing) • LoadRunner • SLOB • Swingbench • .. • ..
  • 11. • SLOB – For IOPS (To Test Physical IO) • Swingbench • Order Entry - introduces heavy contention on a small number of tables and is designed to stress interconnects and memory • Sales History - to test the performance of complicated queries when run against large tables. Tools we picked
  • 12. • SLOB – For IOPS (To Test Physical IO) • Swingbench • Order Entry - introduces heavy contention on a small number of tables and is designed to stress interconnects and memory • Sales History - to test the performance of complicated queries when run against large tables. Tools we picked
  • 13. • 2 Linux physical servers: • Dell PowerEdge R630 – Intel(R) Xeon(R) CPU E5-2660 v3 @ 2.60GHz (Haswell) – 20 Cores – 378G RAM, RAM Speed - DDR4 384G (24x16g dimms) @1866@MHz – HBA – QLogic QLE2662 16Gb FC Adapter • What max throughput we can drive on each box – ~3200 MBPS • 2 node RAC ASM 12.1 Database Oracle Parameter Swingbench SLOB SGA_TARGET 15G 2G SGA_MAX_SIZE 15G 15G PGA_AGGREGATE_TARGET 100G 100G PGA_AGGREGATE_LIMIT 200G 200G JOB_QUEUE_PROCESSES 80 80 PARALLEL_MAX_SERVERS 552 552 PARALLEL_MIN_SERVERS 288 288 REDO CONFIGURATION 10 Groups(min). 1GB each. 10 Groups(min). 1GB each. TEMP TABLESPACE 200GB 200GB Environment Details
  • 14. SLOB Reference- https://kevinclosson.net/slob/ • IO workload generation toolkit • Supports following testing • Oracle Logical Read scaling • Physical random single block read (db file sequential read wait event) • Random single block writes (DBWR flushing capacity) • Redo logging IO • Best tool to test IO subsystem
  • 15. SLOB • Create ~500GB dataset (256 SLOB schemas each 2 GB) • Ran several tests with different # of users - 2,4,8,16,32,64,92,128,160,192,224 and 256
  • 16. Initial Setup https://kevinclosson.net/2014/08/04/slob-deployment-a-picture-tutorial/ • Create a tablespace for SLOB • Run setup.sh - To load SLOB schemas • Execute runit.sh - to run real tests
  • 17. Slob.conf UPDATE_PCT= 0 to 50 -–Update Activity RUN_TIME=1800 --seconds WORK_LOOP=0 SCALE=256000 --Numbers of Blocks WORK_UNIT=64 REDO_STRESS=HEAVY #LITE LOAD_PARALLEL_DEGREE=4 # Settings for SQL*Net connectivity: ADMIN_SQLNET_SERVICE=slob_poc5 SQLNET_SERVICE_BASE=slob_poc5 #SQLNET_SERVICE_MAX=2 #SYSDBA_PASSWD=xxxxx SYSDBA_PASSWD=manager
  • 18. SLOB Test Setup oracle@hostname:poc51> srvctl status service -d poc5_wlk Service slob_poc5 is running on instance(s) poc51,poc52 Service slob_poc51 is running on instance(s) poc51 Service slob_poc52 is running on instance(s) poc52 tnsnames.ora slob_poc51 = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST =xxxx)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = slob_poc51))) slob_poc52 = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = xxxx)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = slob_poc52))) slob_poc5 = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = xxxx)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = slob_poc5))) Test it sqlplus user1/user1@slob1 <<EOF show parameter instance_name EOF sqlplus user1/user1@slob2 <<EOF show parameter instance_name EOF
  • 19. Some underbar parameter simple.ora # The following are needed to force db file sequential read. Omit for direct path short scans. # If you would like to investigate a blend of short scans mixed with single-block random I/O # then comment out these three parameters : _db_block_prefetch_limit = 0 _db_block_prefetch_quota = 0 _db_file_noncontig_mblock_read_count = 0
  • 20. SLOB Caveat • It overwrites logs • Best for IOPS test but not good for driving high throughput
  • 22. Runit wrapper script Better naming convention Doesn’t overwrite files Make Buffer Cache small to stress IO subsystem
  • 23. IOPS/MBPS script Number of Number of Total Number of Number of Total Total Total DATE_TIME DATE_TIME Small reads Small writes Small IOPS large reads large writes Large IOPS MBPS read MBPS written Total MBPS Total IOPS -------------------- -------------------- ------------ ------------- ----------- ------------ ------------- ----------- ---------- ------------- ---------- ---------- 02/05/18_00_19_00_21 02/05/18_00_19_00_21 222 2716 2938 18 14 32 16 35 51 2970 02/05/18_00_21_00_51 02/05/18_00_21_00_51 70374 32138 102512 222 694 916 769 931 1700 103429 .. .. 02/05/18_07_51_08_56 02/05/18_07_51_08_56 18 3 21 1738 10 1748 1728 2 1730 1769 Throughput = IOPS x I/O size In what case IOPS and Throughput could be same?
  • 24. Other tools – db_capacity.sql • Leverages google chart • Thanks to Mauro and Carlos for help 
  • 25. Other tools – db_capacity.sql
  • 26. Other tools – db_capacity.sql
  • 27. Other tools – db_capacity.sql
  • 28. Update% - 10 (To change read/write ratio)
  • 29. Update% - 10 (To change read/write ratio) 0 1000 2000 3000 4000 2 4 8 16 32 64 96 128 224 256 # of SLOB Sessions MBPS MBPS 0 100000 200000 300000 400000 2 4 8 16 32 64 96 128 224 256 # of SLOB Sessions IOPS IOPS 0 1 2 3 4 5 2 4 8 16 32 64 96 128 224 256 ms # of SLOB Sessions Single Block Read Latency (ms) Avg Max 0 2 4 6 8 2 4 8 16 32 64 96 128 224 256 ms # of SLOB Sessions log file parallel write (ms) Avg Max
  • 30. Update% - 10 (To change read/write ratio) 27082 49337 90660 163114 292842 347478 345245 323205 326606 325784 0.39 0.43 0.47 0.51 0.56 1.02 1.57 2.23 3.62 4.04 0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 0 50000 100000 150000 200000 250000 300000 350000 400000 2 4 8 16 32 64 96 128 224 256 Rd RdLatency(ms) IOPS # of SLOB Sessions IOPS Rd Latency(ms)
  • 31. Swingbench testing (Throughput)  Shwizard to build Sales History Schema  500GB schema was created (with range partition)  Several tests (SH) were run with different parallel/Index settings  Swingbench config info • NumberOfUsers 16 • MinDelay 0 • MaxDelay 0 • InterMinDelay 1000 ms • InterMaxDelay 2000 ms • RunTime 1h:5 min • StatsCollectionStart 0:4 min • StatsCollectionEnd 1h:4 min http://dominicgiles.com/swingbench.html
  • 32. Xml config file <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <SwingBenchConfiguration xmlns="http://www.dominicgiles.com/swingbench/config"> <Name>Sales History</Name> <Comment>Configuration file for the Sales History Benchmark</Comment> <Connection> <UserName>sh_500</UserName> <Password>sh_500</Password> <ConnectString>//eihtlrac-scan/slob_poc5</ConnectString> <DriverType>Oracle jdbc Driver</DriverType> <Properties> <Property Key="FetchSize">20</Property> <Property Key="StatementCaching">50</Property> <Property Key="TcpNoDelay">true</Property> </Properties> <InitilizationCommands> <Command>alter session set sql_trace=false</Command> </InitilizationCommands> </Connection> <Load> <NumberOfUsers>16</NumberOfUsers> <MinDelay>0</MinDelay> <MaxDelay>0</MaxDelay> <InterMinDelay>1000</InterMinDelay> <InterMaxDelay>2000</InterMaxDelay> <QueryTimeout>55</QueryTimeout> <MaxTransactions>-1</MaxTransactions> <RunTime>1:5</RunTime>
  • 33. Charbench DIR='/u01/swingbench' BDT=$(date +%Y%m%d) BTM=$(date +%H%M%S) $DIR/bin/charbench -c $DIR/configs/ei_sh.xml -r ${FILE_NM}_results_${BDT}_${BTM}.xml
  • 34. Output xml <?xml version="1.0" encoding="UTF-8" standalone="no"?> <Results xmlns="http://www.dominicgiles.com/swingbench"> <Overview> <BenchmarkName>Sales History</BenchmarkName> <Comment>Configuration file for the Sales History Benchmark</Comment> <TimeOfRun>Feb 7, 2018 9:47:44 PM</TimeOfRun> <TotalRunTime>1:00:00</TotalRunTime> <TotalLogonTime>0:00:00</TotalLogonTime> <TotalCompletedTransactions>40</TotalCompletedTransactions> <TotalFailedTransactions>1</TotalFailedTransactions> <AverageTransactionsPerSecond>0.01</AverageTransactionsPerSecond> <MaximumTransactionRate>5</MaximumTransactionRate> <AverageResponse>1300652.25</AverageResponse> <MinimumResponse>632</MinimumResponse> <MaximumResponse>3102874</MaximumResponse>
  • 36. Vendor rating • Support • Security • Reporting • Reliability • Performance • Management • Functionality • Cost • Storage efficiency – (Dedup, compression) • Scalability
  • 37. Appendix - A Test case – "Spectre" and "Meltdown" vulnerability patching with BIOS update
  • 39. Appendix-C Stack Ranking of Oracle databases
  • 40. Stack rank your databases Database Rank IOPS GB/s Latency Cores Storage ORAprod 1 1.5M 100 <1ms 128 100TB ORAprod 2 1.4M 47 <1ms 128 75TB DB2prod 3 1.3M 46 <1ms 128 75TB ORAprod . . . . . . DB2prod . . . . . . SQLprod . . . . . . ORAprod . . . . . . DB2prod . . . . . . SQLprod . . . . . . ORAtest . . . . . . DB2test . . . . . . SQLtest . . . . . . ORAdev . . . . . . SQLprod . . . . . . SQLtest . . . . . . SQLdev 3000+ 100 1 >10ms 2 20GB High End Physical High End Virtual Virtual On-Prem As-A-Service Off-Prem As-A-Service 80% virtual start here
  • 41. Enterprise wide 95th, 98th and 99th database level stats
  • 43. Q&A

Editor's Notes

  • #4: As a DBA it is very important to understand these basic.
  • #7: DB was on FS good response time, moved to ASM and horrible IO response time. SGA was too small
  • #9: Dual fabric – A and B,
  • #10: Earlier we had only spinning drives with lots of mix workload and inconsistent latency or Exa, we needed something in-between.
  • #11: Invited 5 vendors, put together a matrix what they have to offer in terms of IOPS, Throughput & latency
  • #30: Good to plot db file parallel write as well (Writes from Buffer Cache)
  • #31: Another way to compare IOPS and Read Latency