■本投稿の目的
最新(2016年8月8日現在)のsysbench 0.5 では、ネットに出回ってる情報と一部異なる手順であったのと、PostgreSQLで使用するにはマニュアルが無いなど、ちょっとしたつまづきがあったのでメモしておきます。■環境
何度か本ブログで触れているCentOS 7.2環境、rpmでインストールしたPostgreSQL 9.5を使用します。PostgreSQLインストール先(バイナリ配置先) /usr/pgsql-9.5/bin
PostgreSQL実行ユーザのホーム /var/lib/pgsql
PostgreSQLのデータディレクトリ($PGDATA) /var/lib/pgsql/9.5/data
PostgreSQLを起動しておきます。
# systemctl start postgresql-9.5.service
■sysbenchの入手
入手
https://github.com/akopytov/sysbench
rootユーザで適当なディレクトリに配置、解凍しておきました。
# cd /tmp # unzip sysbench-0.5.zip
■sysbenchのインストール
sysbenchのマニュアルにはMySQL対応についてしか書かれていないため、この手順で少々試行錯誤しました。# cd sysbench-0.5/ # ./autogen.sh # ./configure --prefix=/usr/sysbench \ > --without-mysql \ > --with-pgsql=/usr/pgsql-9.5 \ > --with-pgsql-includes=/usr/pgsql-9.5/include \ > --with-pgsql-libs=/usr/pgsql-9.5/lib # make
成功すると、以下の状態になっていることを確認
- /tmp/sysbench-0.5/sysbench配下に、sysbenchコマンドが作成される。
- /tmp/sysbench-0.5/sysbench/drivers/pgsql 配下に、ドライバモジュールが作成される。
# ls /tmp/sysbench-0.5/sysbench/drivers/pgsql Makefile Makefile.am Makefile.in drv_pgsql.c libsbpgsql.a libsbpgsql_a-drv_pgsql.o
なお、実行ユーザでPATHを通しておくと便利なので、今回はpostgresユーザで環境変数を設定しておきます。
# su - postgres $ vi .bash_profile ----- export PATH=/tmp/sysbench-0.5/sysbench:.:$PATH ----- $ source .bash_profile
■実行前のPostgreSQL側の作業
sysbenchでは、デフォルトでlocalhost、sbtestデータベース、sbtestユーザ、5432ポートでPostgreSQLにアクセスします。そのつもりでPostgreSQL側の環境を準備します。$ psql postgres=# CREATE ROLE sbuser login password 'sbpass'; CREATE ROLE postgres=# CREATE DATABASE sbdb OWNER sbuser; CREATE DATABASE postgres=# \q今回はいろいろ試すべく、データベース名、ユーザ名、パスワードそれぞれ変えておきました。
■sysbenchの実行
oltpベンチマークの実行では、sysbenc 0.4までと違って、testモードを以下のように指定します。sysbench/tests/db/ディレクトリを見ると、ベンチマークのパターンごとにluaファイルが用意されているので、これを指定しています。
まずは、prepareでテーブル等の準備をします。
$ sysbench --test=/tmp/sysbench-0.5/sysbench/tests/db/oltp.lua \ > --db-driver=pgsql \ > --pgsql-user=sbuser --pgsql-password=sbpass --pgsql-db=sbdb \ > prepare sysbench 0.5: multi-threaded system evaluation benchmark Creating table 'sbtest1'... Inserting 10000 records into 'sbtest1'
つづいてベンチマークの取得です。
$ sysbench --test=/tmp/sysbench-0.5/sysbench/tests/db/oltp.lua \ > --db-driver=pgsql \ > --pgsql-user=sbuser --pgsql-password=sbpass --pgsql-db=sbdb \ > run sysbench 0.5: multi-threaded system evaluation benchmark Running the test with following options: Number of threads: 1 Random number generator seed is 0 and will be ignored Initializing worker threads... Threads started! OLTP test statistics: queries performed: read: 140000 write: 40000 other: 20000 total: 200000 transactions: 10000 (96.53 per sec.) read/write requests: 180000 (1737.48 per sec.) other operations: 20000 (193.05 per sec.) ignored errors: 0 (0.00 per sec.) reconnects: 0 (0.00 per sec.) General statistics: total time: 103.5983s total number of events: 10000 total time taken by event execution: 103.5635s response time: min: 4.04ms avg: 10.36ms max: 23.20ms approx. 95 percentile: 10.97ms Threads fairness: events (avg/stddev): 10000.0000/0.00 execution time (avg/stddev): 103.5635/0.00実行時のオプションでは、OLTPの並列度や実行回数などを調整可能です。 その辺の実行方法や、結果の見方は別の機会に。
0 件のコメント:
コメントを投稿