Oracle

Benchmark Tessell RDS Oracle performance using SLOB

April 13, 2023
Benchmark Tessell RDS Oracle performance using SLOB
5 min read
TL;DR
  • Tessell HPC Oracle on AWS uses NVMe backed infrastructure benchmarked against Amazon RDS Oracle using the SLOB 2.5.4 tool on identical 8 vCPU, 64 GB tesl_8h_a shapes.
  • SLOB benchmark results show Tessell at 165,569 average IOPS and 1,293.5 MB/s throughput versus Amazon RDS at 15,010 IOPS and 117.3 MB/s for the same 525 GB workload.
  • Tessell delivered 1,103% higher IOPS than Amazon RDS Oracle at equivalent cost, running 128 schemas for 3,600 seconds with 15% update workload and 4 GB scale per schema.
  • Key Oracle tuning parameters for the benchmark included db_writer_processes set to 16 and db_cache_size set to 32 GB to maximize sustained IOPS throughput.
  • Choose Tessell HPC Oracle over Amazon RDS when large Oracle workloads exceed the 80,000 IOPS ceiling of network attached cloud storage and require predictable NVMe performance.

With the surge in the number of Database-as-a-Service providers in the market today, many DBaaS providers claim to offer competitive database performance for your applications. The only true way of evaluating the performance of the database is by running performance benchmarks for the databases running on the cloud. In this article, we run performance benchmarks to evaluate, analyze, and compare the performance of Oracle database engines running on the AWS cloud for Tessell. We have used the SLOB benchmarking tool for the benchmarking process.


Before starting the benchmarking process, you need to get your environment ready.

Prepare your environment

To prepare the environment for the benchmarking process, perform the following high-level tasks:


  1. Provision a Tessell RDS Oracle instance to benchmark the performance testing. We are using the Tessell shape “tesl_8h_a” on the AWS cloud. This shape comes with 8 vCPUs and 64 GB RAM. While provisioning the instance, note down the username and password to connect to your database instance.

  2. Launch or create an Amazon EC2 instance to install the SLOB benchmarking tool, and set up the load. It is recommended that you create the instance in the same Virtual Private Cloud (VPC) as your Tessell RDS instance to keep the latency minimum.

  3. Set up the security groups for the client and server machines in a way that the client machine can connect to the server machine over the database port TCP:1521. For more information, see Default security groups for your VPC.

The following diagram shows the recommended environment for running the benchmarking process. The VPC located in the AWS cloud contains the Tessell RDS Oracle instance and the SLOB client installed in the Amazon EC2 instance.

Provision the Oracle client machine

Firstly, provision the client Linux machine to install the SLOB benchmarking tool. For our test, we provisioned the Amazon Linux instance with the following configuration details:
Image: RHEL_HA-8.4.0_HVM-20210504-x86_64-2-Hourly2-GP2
Shape: m5.2xlarge
VPC: Same as the DB Service

Download SLOB and Install Oracle Client

Secondly, download the SLOB benchmarking tool on the provisioned instance and Oracle Client. To do so, perform the following steps:


1. Download and install Oracle database client RPM.
curl -o oracle-database-preinstall-21c-1.0-1.el8.x86_64.rpm https://yum.oracle.com/repo/OracleLinux/OL8/appstream/x86_64/getPackage/oracle-database-preinstall-21c-1.0-1.el8.x86_64.rpm
wget https://rpmfind.net/linux/centos/7.9.2009/os/x86_64/Packages/compat-libstdc++-33-3.2.3-72.el7.x86_64.rpm

sudo yum install compat-libstdc++-33-3.2.3-72.el7.x86_64.rpm -y
sudo yum install oracle-database-preinstall-21c-1.0-1.el8.x86_64.rpm -y


2. Download the Oracle Client software with below link and scp to client server.
https://www.oracle.com/database/technologies/oracle21c-linux-downloads.html


3. Create the directories for Oracle client software.
chown -R oracle:oinstall /u02
chmod -R 775 /u02
mkdir -p /u02/app/oraInventory
mkdir -p /u02/app/oracle
mkdir -p /u02/app/oracle/product/dbhome_1
chown -R oracle:oinstall /u02/app/oraInventory
chown -R oracle:oinstall /u02/app/oracle
chown -R oracle:oinstall /u02/app/oracle/product/dbhome_1
chmod -R 775 /u02/app/oraInventory
chmod -R 775 /u02/app/oracle
chmod -R 775 /u02/app/oracle/product/dbhome_1


4. Unzip the Oracle database client software and update response file.
cd /tmp
unzip LINUX.X64_213000_client.zip
cd /tmp/client/response
cat client_install.rsp

# Update client_install.rsp
UNIX_GROUP_NAME=dba
INVENTORY_LOCATION=/u02/app/oraInventory
ORACLE_HOME=/u02/app/oracle/product/dbhome_1
ORACLE_BASE=/u02/app/oracle
oracle.install.client.installType=Administrator


5. Install the Oracle client.  
cd /tmp/client
./runInstaller -ignoreSysPrereqs -showProgress -silent -responseFile /tmp/client/response/client_install.rsp
Run the orainstRoot.sh as root user.
sudo /u02/app/oraInventory/orainstRoot.sh


6. Update the TNS connection and set the following environment variables. Get the service URL from Tessell GUI to set as HOST in the TNS connection.
cd /u02/app/oracle/product/dbhome_1/network/admin/
cat tnsnames.ora
orcl =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = sandip09-yqequ.tessell.tessell.com)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )

export ORACLE_BASE=/u02/app/oracle
export ORACLE_HOME=/u02/app/oracle/product/dbhome_1
export PATH=/u02/app/oracle/product/dbhome_1/bin:/sbin:/bin:/usr/sbin:/usr/bin
export TNS_ADMIN=/u02/app/oracle/product/dbhome_1/network/admin


7. Test the sqlplus connection by running the following command:
$ sqlplus master/xxxxx@orcl
SQL*Plus: Release 21.0.0.0.0 - Production on Thu Apr 13 14:49:28 2023
Version 21.3.0.0.0

Copyright (c) 1982, 2021, Oracle. All rights reserved.


Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.18.0.0.0

SQL> show user
USER is "MASTER"
SQL>


8. Note: To increase the average IOPS, update the below parameters on the Oracle database.
SQL> show parameter DB_WRITER_PROCESSES

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_writer_processes integer 16

SQL> show parameter db_cache_size

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_cache_size big integer 32G
SQL>


9. Download the SLOB source code by using wget.


  • Install the wget tool and clone the SLOB project to your instance. 
    sudo yum install wget -y
    cd /u02
    wget 'https://github.com/therealkevinc/SLOB_2.5.4/archive/refs/heads/main.zip'

  • Extract the SLOB source code files.
     
    cd /u02
    unzip main.zip
    cd SLOB_2.5.4-main/
    tar -zxvf 2021.05.12.slob_2.5.4.0.tar.gz
    cp -rf SLOB/ /u02

Run the benchmark

Before you run the benchmark, configure the SLOB configuration file and start the Setup (load schemas), and


  • Open the  <code>/u02/SLOB/slob.conf</code>  file and replace the default parameter values with the following values:
    UPDATE_PCT=15
    RUN_TIME=3600
    SCALE=4G
    WORK_UNIT=256
    LOAD_PARALLEL_DEGREE=16
    DATABASE_STATISTICS_TYPE=awr # Permitted values: [statspack|awr]
    ADMIN_SQLNET_SERVICE=orcl
    SQLNET_SERVICE_BASE=orcl
    DBA_PRIV_USER="MASTER"
    SYSDBA_PASSWD="******" # Type your password here

For more information about the SLOB configuration parameter, see the README.


  • Start setting up SLOB and load schemas by running the following command:  
    sudo su - oracle
    cd /u02/SLOB/wait_kit
    make all
    cd /u02/SLOB
    nohup ./setup.sh MASTER_TBS 128 &

This loads approximately 525 GB of slob database.


  • Run the performance test with the following command:
    nohup ./runit.sh -s 128 -t 1 &

Results

When the performance test completes, the IOPS achieved from the database transaction is displayed on the last line. When we ran our test on Tessell RDS and AWS RDS, we got the following results:


On Tessell RDS
   DBNAME: orcl. 128 schemas, 1 threads(each). Run time: 3600 seconds. Avg IOPS >165569< Throughput(MB/s) >1293.5<


On Amazon RDS
DBNAME: orcl. 128 schemas, 1 threads(each). Run time: 3600 seconds. Avg IOPS >15010< Throughput(MB/s) >117.3<

Conclusion

It is, therefore, safe to conclude that Tessell RDS produced 1,103% higher IOPS as compared to AWS RDS for the identical SLOB workload at the same cost. The image below depicts the visual comparison of the performance benchmark results that Tessell RDS and AWS RDS produce:

Benchmark Results
FAQs
SLOB is an open-source Oracle database benchmarking tool that measures IOPS and throughput performance under configurable workloads, including schemas, threads, runtime, scale, and update percentages.
Benchmarking Oracle performance with SLOB involves provisioning a database instance, launching a Linux EC2 client, installing Oracle Client and SLOB, configuring slob.conf, loading schemas, and running runit.sh.
Tessell Oracle produced 1,103% higher IOPS than AWS RDS in SLOB benchmarks at the same cost, delivering 165,569 IOPS versus 15,010 IOPS on identical SLOB workloads.
The Tessell Oracle SLOB benchmark used the tesl_8h_a shape with 8 vCPUs and 64 GB RAM, paired with an m5.2xlarge Amazon Linux EC2 client in the same VPC running Oracle 19c.
The Tessell Oracle SLOB benchmark used UPDATE_PCT 15, RUN_TIME 3600 seconds, SCALE 4G, WORK_UNIT 256, LOAD_PARALLEL_DEGREE 16, and AWR statistics, loading approximately 525 GB into the database.
Related Blogs