2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Oracle用I/OワークロードツールのSLOBを使ってみる

Posted at

#参考にした記事、ドキュメント

Oracle Database の I/O 負荷テストツール SLOB(The Silly Little Oracle Benchmark) の紹介
http://d.hatena.ne.jp/yohei-a/20171221/1513867831

Kevin Closson's Blog: Platforms, Databases and Storage
https://kevinclosson.net/slob/

Introducing SLOB – Simple Database I/O Testing Toolkit for Oracle Database
https://kevinclosso

製品付属のREADME
https://github.com/therealkevinc/SLOB_distribution/blob/master/SLOB-2.4.2_README.pdf

#試した環境

  • Oracle Linux Server release 7.3
  • Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
  • NON-CDB
  • SingleDB、Filesystem

#インストール

##ダウンロード

$  curl -L -O https://github.com/therealkevinc/SLOB_distribution/raw/master/2018.04.16.slob_2.4.2.1.tar.gz

##解凍

$ tar xvfz 2018.04.16.slob_2.4.2.1.tar.gz

→SLOBディレクトリが作成される

##コンパイル

makeにはgccが必要なので注意。

$ cd ./SLOB/wait_kit
$ make
rm -fr *.o mywait trigger create_sem
cc     -c -o mywait.o mywait.c
cc -o mywait mywait.o
cc     -c -o trigger.o trigger.c
cc -o trigger trigger.o
cc     -c -o create_sem.o create_sem.c
cc -o create_sem create_sem.o
cp mywait trigger create_sem ../
rm -fr *.o

cd ..

#事前準備

テスト用の表領域の作成

作成用のSQLがmiscディレクトリは以下のts.sqlとして準備されている。
SQL> @misc/ts.sqlとして実行する。
SQL文中で表領域の指定がないため、必要に応じてdb_create_file_destの指定を行う。

$ sqlplus / as sysdba

SQL> alter session set db_create_file_dest='/u01/app/oracle/oradata/orcl';

Session altered.

SQL> @misc/ts.sql
SQL> set timing on
SQL> drop tablespace IOPS including contents and datafiles;
drop tablespace IOPS including contents and datafiles
*
ERROR at line 1:
ORA-00959: tablespace 'IOPS' does not exist


Elapsed: 00:00:00.01
SQL>
SQL> create BIGFILE tablespace IOPS datafile size 1G
  2  NOLOGGING ONLINE PERMANENT EXTENT MANAGEMENT LOCAL AUTOALLOCATE SEGMENT SPACE MANAGEMENT AUTO ;

Tablespace created.

Elapsed: 00:00:31.76
SQL>
SQL> alter tablespace IOPS autoextend on next 200m maxsize unlimited;

Tablespace altered.

Elapsed: 00:00:00.00
SQL> exit;
Disconnected from Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production

##設定ファイルの確認/変更

slob.confファイルで指定する。
以下の項目がデフォルトで指定されている。

パラメータの詳細については、READMEに記載がある。

$ grep -v -e '^\s*#' -e '^\s*$' slob.conf
UPDATE_PCT=10
SCAN_PCT=0
RUN_TIME=300
WORK_LOOP=0
SCALE=80M
SCAN_TABLE_SZ=1M
WORK_UNIT=64
REDO_STRESS=LITE
LOAD_PARALLEL_DEGREE=2
THREADS_PER_SCHEMA=1
DATABASE_STATISTICS_TYPE=statspack   # Permitted values: [statspack|awr]
EXTERNAL_SCRIPT=''
DO_HOTSPOT=FALSE
HOTSPOT_MB=8
HOTSPOT_OFFSET_MB=16
HOTSPOT_FREQUENCY=3
HOT_SCHEMA_FREQUENCY=0
THINK_TM_FREQUENCY=0
THINK_TM_MIN=.1
THINK_TM_MAX=.5

ここでは、Oracle管理ユーザの設定と、レポートの種別の変更(Statspack→AWR)を行う。

$cp -p slob.conf slob.conf.bk 

$ vi slob.conf

$ diff slob.conf slob.conf.bk
[oracle@ol122a SLOB]$ diff slob.conf slob.conf.bk
15c15
< DATABASE_STATISTICS_TYPE=awr  # Permitted values: [statspack|awr]
---
> DATABASE_STATISTICS_TYPE=statspack   # Permitted values: [statspack|awr]
28,29c28,29
< DBA_PRIV_USER="system"
< SYSDBA_PASSWD="oracle"
---
> #DBA_PRIV_USER="system"
> #SYSDBA_PASSWD="manager"

##ベンチマーク用のテーブルを作成

setup.shにてベンチマーク用のテーブルを作成する。使い方は以下。

Usage : ./setup.sh: <tablespace name> <number of SLOB schemas to create and load>

ここでは、IOPS表領域に1スキーマを作成する。

$ sh ./setup.sh IOPS 1
SLOB 2.4.0
NOTIFY  : 2018.04.22-15:39:00 :
NOTIFY  : 2018.04.22-15:39:00 : Begin SLOB setup.
NOTIFY  : 2018.04.22-15:39:00 : ADMIN_CONNECT_STRING: "system/oracle"
NOTIFY  : 2018.04.22-15:39:00 : Load parameters from slob.conf:

SCALE: 80M (10240 blocks)
SCAN_TABLE_SZ: 1M (128 blocks)
LOAD_PARALLEL_DEGREE: 2
ADMIN_SQLNET_SERVICE: ""
SYSDBA_PASSWD: "oracle"
DBA_PRIV_USER: "system"

Note: setup.sh will use the following connect strings as per slob.conf:
        Admin Connect String: "system/oracle"
        Non-Admin Connect String: " "

<中略>

NOTIFY  : 2018.04.22-15:39:08 : examine /home/oracle/slob/SLOB/cr_tab_and_load.out

NOTIFY  : 2018.04.22-15:39:08 : SLOB setup complete. Total setup time:  (8 seconds)

結果ログの確認

$ cat /home/oracle/slob/SLOB/cr_tab_and_load.out

<中略>
OWNER      TABLE_NAME         NUM_ROWS           BLOCKS
---------- ---------- ---------------- ----------------
USER1      CF1                  10,240           11,123
USER1      CF2                     128              134

#テストの実行と結果

##テストの実行
runit.shにてテストの実行を行う。使い方は以下。

./runit.sh supports the following command usage:
1. Single Option Invocation.
        $ sh ./runit.sh <number-of-SLOB-schemas-to-test>

2. Multiple Option Invocation
   2.1 This invocation style requires *exactly* four options.
        $ sh ./runit.sh -s <number-of-slob-schemas-to-test> -t <SLOB-threads-per-schema>

ここでは1スキーマで実施。

$ sh ./runit.sh 1
NOTIFY  : 2018.04.22-15:42:22 : For security purposes all file and directory creation and deletions
<中略>
NOTIFY  : 2018.04.22-15:48:35 :
NOTIFY  : 2018.04.22-15:48:35 : SLOB test is complete.
NOTIFY  : 2018.04.22-15:48:35 : Cleaning up SLOB temporary directory (/tmp/.SLOB.2018.04.22.154222).

#結果と評価

##結果ファイル

AWRレポート(あるいはStatspackレポート)、OS情報(vmstat,iostat,mpstat)が取得されている。

$ ls -lt awr.txt
-rw-r--r--. 1 oracle oinstall 224457 Apr 22 15:48 awr.txt

$ ls -lt mpstat.out iostat.out vmstat.out
-rw-r--r--. 1 oracle oinstall  9339 Apr 22 15:48 vmstat.out
-rw-r--r--. 1 oracle oinstall 62683 Apr 22 15:48 iostat.out
-rw-r--r--. 1 oracle oinstall 40141 Apr 22 15:48 mpstat.out

##awr結果の整形

AWRレポートをスプレッドシートでまとめやすい形式にサマリするツールが提供されている。
miscディレクトリ以下のawr_info.shを実行する。
なお、本シェルの実行にはbcが必要なので事前にインストールしておく。

$ sh ./misc/awr_info.sh  awr.txt
FILE|SESSIONS|ELAPSED|DB CPU|DB Tm|EXECUTES|LIO|PREADS|READ_MBS|PWRITES|WRITE_MBS|REDO_MBS|DFSR_LAT|DPR_LAT|DFPR_LAT|DFPW_LAT|LFPW_LAT|TOP WAIT|
awr.txt||304|0.6|1.0|5271|343110|8|    9.5|321|    26|8.7|    4918|0|       0|   39967|    4558|DB CPU 

##評価

本ツールではTPS等での評価は行わない。
評価のポイントとしては、READMEでは以下が紹介されている。

###Physical I/O Testing

  • SQL Executions(awr_infoのEXECUTESの値)
  • Physical IOPS(awr_infoのPREADSとPWRITESの合計)

###Logical I/O Testing

  • Logical IOPS(awr_infoのLIOの値)

#その他の参考

grepでコメント行および空白行を削除する
https://qiita.com/n-oshiro/items/91d807f3151694e6c7a8

curlでファイルをダウンロードする
http://d.hatena.ne.jp/ksaito11/20090605/1244208059

2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?