LoginSignup
3
3

More than 5 years have passed since last update.

1台のサーバでSwiftStackのssbenchを動かすまでの覚書

Posted at

はじめに

OpenStack Swiftのベンチマークを取るためにSwiftStackが開発しているssbenchというベンチマークツールを構築してみた。使用したOSはUbuntu 14.04.3である。当然だが、ssbenchを構築したサーバとは別途OpenStack Swiftそのものを構築しておく必要がある。

OpenStack Swiftの簡易的な構築手順については以下のとおりである。

OpenStack Swift(Kilo Release)を構築してみた

ssbenchインストール

以下のコマンドで構築できる。各々の環境で外部との間にproxyがある場合には、pip実行時に、--proxy=をつけるとうまくいく。

$ sudo apt-get update
$ sudo apt-get install -y python-dev python-pip 'g++' libzmq-dev
$ sudo pip install pip --upgrade --proxy="http://<myproxy>:<myport>"
$ sudo pip install ssbench --allow-external statlib --allow-unverified statlib --proxy="http://<myproxy>:<myport>"

シナリオ作成

ベンチマークを実行するためには、事前にシナリオを作成して、そのシナリオに沿って実行することになる。以下のシナリオは、ssbenchのGitHubのREADME.mdに記載されているサンプルのシナリオである。各項目の説明もREADME.mdに記載されている。crud_profileという項目が、CREATE、READ、UPDATE、DELETEの各メソッドの割合である。ここを調整すれば書き込みだけのベンチマークを作ることも可能である。

very_small.scenario
{
  "name": "Small test scenario",
  "sizes": [{
    "name": "tiny",
    "size_min": 4096,
    "size_max": 65536
  }, {
    "name": "small",
    "size_min": 100000,
    "size_max": 200000
  }],
  "initial_files": {
    "tiny": 100,
    "small": 10
  },
  "operation_count": 500,
  "crud_profile": [3, 4, 2, 2],
  "user_count": 7
}

ベンチマーク実行

ベンチマーク用サーバが1台のみの場合、workerを事前に立ち上げておく必要はないため、以下のコマンドで実行できる。--workerオプションでworker数を決定する。注意点として、ssbenchは、Keystone v3にまだ対応していないため、認証のための環境変数は、v2を利用する必要がある。

$ export OS_TENANT_NAME=demo
$ export OS_USERNAME=demo
$ export OS_PASSWORD=demo
$ export OS_AUTH_URL=http://192.168.0.13:5000/v2.0
$ swift stat
                        Account: AUTH_25e9c03ea9824a6e8d24a60ac5e72c98
                     Containers: 0
                        Objects: 0
                          Bytes: 0
Containers in policy "policy-0": 0
   Objects in policy "policy-0": 0
     Bytes in policy "policy-0": 0
    X-Account-Project-Domain-Id: default
                     Connection: keep-alive
                    X-Timestamp: 1441783575.55310
                     X-Trans-Id: tx2260ad3b3ed840f99d075-0056091154
                   Content-Type: text/plain; charset=utf-8
                  Accept-Ranges: bytes
$ ssbench-master run-scenario -f scenarios/very_small.scenario -u 4 -c 80 -o 613 --pctile 50 --workers 2

ベンチマークが完了すると、以下のとおりObjectsの値が増えていることが確認できる。

$ swift stat
                        Account: AUTH_25e9c03ea9824a6e8d24a60ac5e72c98
                     Containers: 81
                        Objects: 39
                          Bytes: 1423364
Containers in policy "policy-0": 81
   Objects in policy "policy-0": 39
     Bytes in policy "policy-0": 1423364
    X-Account-Project-Domain-Id: default
                     Connection: keep-alive
                    X-Timestamp: 1441783575.55310
                     X-Trans-Id: tx2260ad3b3ed840f99d075-0056091154
                   Content-Type: text/plain; charset=utf-8
                  Accept-Ranges: bytes

レポート

デフォルトでは、以下のとおり、標準出力にレポートが出力される。

$ ssbench-master run-scenario -f scenarios/very_small.scenario -u 4 -c 80 -o 613 --pctile 50 --workers 2
INFO:SwiftStack Benchmark (ssbench version 0.3.6)
INFO:Spawning local ssbench-worker (logging to /tmp/ssbench-worker-local-0.log) with ssbench-worker --zmq-host 127.0.0.1 --zmq-work-port 13579 --zmq-results-port 13580 --concurrency 2 --batch-size 1 0
INFO:Spawning local ssbench-worker (logging to /tmp/ssbench-worker-local-1.log) with ssbench-worker --zmq-host 127.0.0.1 --zmq-work-port 13579 --zmq-results-port 13580 --concurrency 2 --batch-size 1 1
INFO:Starting scenario run for "Small test scenario"
INFO:Starting new HTTP connection (1): 192.168.0.13
INFO:Ensuring 80 containers (ssbench_*) exist; concurrency=10...
INFO:Initializing cluster with stock data (up to 4 concurrent workers)
INFO:Starting benchmark run (up to 4 concurrent workers)
Benchmark Run:
  X    work job raised an exception
  .  <  1s first-byte-latency
  o  <  3s first-byte-latency
  O  < 10s first-byte-latency
  * >= 10s first-byte-latency
  _  <  1s last-byte-latency  (CREATE or UPDATE)
  |  <  3s last-byte-latency  (CREATE or UPDATE)
  ^  < 10s last-byte-latency  (CREATE or UPDATE)
  @ >= 10s last-byte-latency  (CREATE or UPDATE)
.____________..__..._._____.___._...___....._..______.__.___....__.___._______..___..___.__.___..__..__.___..______.___.._____._._._.__..__.__________.___..._.______._..___._...__..__..___..._______._....
._______..____.___._...__.__.________...___.___..___..._.___......_.__._._.___._..._.________.._.___.._.____._.___.___._..___.__.________..._.___.__._..._...____.____________.._..____.___..____.___....__.
______._.___....._.._.___.____.___...______._.____.__.____..__...__....__._____.____._.._.___.._.___.____.._.__....__..._..__.._..___...______..._____.________._.___..__..______._.__.____._.._._.___.___..
_
INFO:Deleting population objects from cluster
INFO:Calculating statistics...
[23/4042]

Small test scenario  (generated with ssbench version 0.3.6)
Worker count:   2   Concurrency:   4  Ran 2015-09-28 09:01:12 UTC to 2015-09-28 09:01:15 UTC (2s)
Object expiration (X-Delete-After): None (sec)

% Ops    C   R   U   D       Size Range       Size Name
91%   % 27  36  18  18        4 kB -  66 kB  tiny
9%   % 27  36  18  18      100 kB - 200 kB  small
---------------------------------------------------------------------
27  36  18  18      CRUD weighted average

TOTAL
Count:   613 (    0 error;     0 retries:  0.00%)  Average requests per second: 275.5
min       max      avg      std_dev  50%-ile                   Worst latency TX ID
First-byte latency:  0.004 -   0.033    0.007  (  0.003)    0.007  (all obj sizes)  txa4bc993d43b84f0e85e68-00560901da
Last-byte  latency:  0.004 -   0.034    0.013  (  0.005)    0.013  (all obj sizes)  tx2d34ee8c4d6d4189b8ea8-00560901da
First-byte latency:  0.004 -   0.033    0.007  (  0.003)    0.007  (    tiny objs)  txa4bc993d43b84f0e85e68-00560901da
Last-byte  latency:  0.004 -   0.034    0.013  (  0.005)    0.013  (    tiny objs)  tx2d34ee8c4d6d4189b8ea8-00560901da
First-byte latency:  0.005 -   0.013    0.008  (  0.002)    0.008  (   small objs)  txe0adce80c104457b9d691-00560901db
Last-byte  latency:  0.006 -   0.024    0.014  (  0.005)    0.014  (   small objs)  txd660615e53b043608533a-00560901db

CREATE
Count:   156 (    0 error;     0 retries:  0.00%)  Average requests per second:  70.7
min       max      avg      std_dev  50%-ile                   Worst latency TX ID
First-byte latency:  N/A   -   N/A      N/A    (  N/A  )    N/A    (all obj sizes)
Last-byte  latency:  0.010 -   0.034    0.018  (  0.004)    0.017  (all obj sizes)  tx2d34ee8c4d6d4189b8ea8-00560901da
First-byte latency:  N/A   -   N/A      N/A    (  N/A  )    N/A    (    tiny objs)
Last-byte  latency:  0.010 -   0.034    0.018  (  0.004)    0.017  (    tiny objs)  tx2d34ee8c4d6d4189b8ea8-00560901da
First-byte latency:  N/A   -   N/A      N/A    (  N/A  )    N/A    (   small objs)
Last-byte  latency:  0.013 -   0.023    0.019  (  0.003)    0.019  (   small objs)  txcc1f72421c8642569669f-00560901db

READ
Count:   227 (    0 error;     0 retries:  0.00%)  Average requests per second: 102.5
min       max      avg      std_dev  50%-ile                   Worst latency TX ID
First-byte latency:  0.004 -   0.033    0.007  (  0.003)    0.007  (all obj sizes)  txa4bc993d43b84f0e85e68-00560901da
Last-byte  latency:  0.004 -   0.034    0.007  (  0.003)    0.007  (all obj sizes)  txa4bc993d43b84f0e85e68-00560901da
First-byte latency:  0.004 -   0.033    0.007  (  0.003)    0.007  (    tiny objs)  txa4bc993d43b84f0e85e68-00560901da
Last-byte  latency:  0.004 -   0.034    0.007  (  0.003)    0.007  (    tiny objs)  txa4bc993d43b84f0e85e68-00560901da
First-byte latency:  0.005 -   0.013    0.008  (  0.002)    0.008  (   small objs)  txe0adce80c104457b9d691-00560901db
Last-byte  latency:  0.006 -   0.014    0.009  (  0.002)    0.010  (   small objs)  txe0adce80c104457b9d691-00560901db

UPDATE
       Count:   112 (    0 error;     0 retries:  0.00%)  Average requests per second:  50.8
                            min       max      avg      std_dev  50%-ile                   Worst latency TX ID
       First-byte latency:  N/A   -   N/A      N/A    (  N/A  )    N/A    (all obj sizes)
       Last-byte  latency:  0.011 -   0.025    0.017  (  0.003)    0.017  (all obj sizes)  txd1fb3de9a4ea4a308e498-00560901da
       First-byte latency:  N/A   -   N/A      N/A    (  N/A  )    N/A    (    tiny objs)
       Last-byte  latency:  0.011 -   0.025    0.017  (  0.003)    0.017  (    tiny objs)  txd1fb3de9a4ea4a308e498-00560901da
       First-byte latency:  N/A   -   N/A      N/A    (  N/A  )    N/A    (   small objs)
       Last-byte  latency:  0.012 -   0.024    0.019  (  0.004)    0.019  (   small objs)  txd660615e53b043608533a-00560901db

DELETE
       Count:   118 (    0 error;     0 retries:  0.00%)  Average requests per second:  53.5
                            min       max      avg      std_dev  50%-ile                   Worst latency TX ID
       First-byte latency:  N/A   -   N/A      N/A    (  N/A  )    N/A    (all obj sizes)
       Last-byte  latency:  0.008 -   0.021    0.013  (  0.003)    0.013  (all obj sizes)  tx9e4fcece93f246978ddb3-00560901da
       First-byte latency:  N/A   -   N/A      N/A    (  N/A  )    N/A    (    tiny objs)
       Last-byte  latency:  0.008 -   0.021    0.013  (  0.003)    0.013  (    tiny objs)  tx9e4fcece93f246978ddb3-00560901da
       First-byte latency:  N/A   -   N/A      N/A    (  N/A  )    N/A    (   small objs)
       Last-byte  latency:  0.011 -   0.019    0.014  (  0.002)    0.014  (   small objs)  tx69c6d811c4144804ade27-00560901db

Distribution of requests per worker-ID: 306.000 - 307.000 (avg: 306.500; stddev:   0.500)
INFO:Scenario run results saved to /tmp/ssbench-results/Small_test_scenario.u4.o613.r-.2015-09-28.090109.stat.gz
INFO:You may generate a report with:
  /usr/local/bin/ssbench-master report-scenario -s /tmp/ssbench-results/Small_test_scenario.u4.o613.r-.2015-09-28.090109.stat.gz

標準出力にある通り、以下のコマンドでファイルに出力可能である。

$ /usr/local/bin/ssbench-master report-scenario -s /tmp/ssbench-results/Small_test_scenario.u4.o613.r-.2015-09-28.090109.stat.gz

その他、--csvオプションを付ければ、代わりにcsvファイルが出力される。

これで、ひとまず基本的なベンチマークができるようになる。

3
3
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
3
3