Sekka.Benchmark RSSPLAIN

Related pages: Sekka Sekka.ReleaseNote kiyoka.2010_12_06 !kiyoka.blog.2010_12
55255555555555555545554554445555555555555555555533333355555555555555555555555555555555555555522555
5

Sekkaのベンチマーク

5

このページでは、Sekka付属のベンチマークツールを使ったベンチマーク方法について解説します。

2

※ Sekka version 0.8.2から付属しています。

5

 

5

sekka-benchmarkについて

5

localhostで起動しているsekka-serverに対してWeb APIのスループットを実測するツールです。

5

OSやハードウェアによって大きくパフォーマンスが変わるので、それを手軽に計測することが目的です。

5

同一のローマ字で連続100回リクエストするパターンや、全て異なるローマ字を連続100回リクエストするパターンなどを用意しています。

5

 

5

使いかた

5

sekka-benchmarkを引数なしで起動すると使いかたが表示されます。

5
$ ./sekka-benchmark 
5
Usage : 
5
  sekka-benchmark samekey0  .... henkan 100 times with same keyword  [Kanji]        (get N candidate)
5
  sekka-benchmark samekey1  .... henkan 100 times with same keyword  [Kanji]        (get 1 candidate)
5
  sekka-benchmark uniqkey0  .... henkan 100 times with uniq keywords [Aimai Ao ...] (get N candidate)
5

 

5

計測にあたっての注意

4

jzRPejte9jsbhbBp-6912B

5

sekka-serverは、一度計算した変換リクエストをmemcachedでキャッシュする構造になっています。

5

従って、同一のローマ字で100回の変換リクエストを行う 'samekey0' などは 99回はmemcachedに蓄積されているキャッシュが使われます。

5

 

4

sekka-severが使っているTokyoCabinetでは、辞書DBがmmapシステムコールでファイルシステムにマッピングされているため、readしている箇所から局所的にじわじわメモリにキャッシュされます。

5

このように、計測の際にはキャッシュの特性をある程度把握した上で行ってください。

5

 

4

sekka-benchmarkはcurlコマンドを使用しており、100回のhttpリクエストには100回のcurlコマンドの起動が行われます。

4

従って、sekka-server単体では計測値よりももっと良い結果が出る可能性があります。

4

ただ、sekka.elの内部でも同様にcurlコマンドを起動しており、条件は同一なので、クライアント側の高速化は行っていません。

5

 

5

各パターンの説明

5

 

5
samekey0
5

"Kanji"というローマ字で /henkan というAPIを100回叩くベンチマークです。

5

返却する変換候補数は「無制限」です。

5

そのため、samekey1よりも返却されるデータ容量は多いです。

5

 

5
samekey1
5

samekey0 の返却する変換候補数制限版です。

5

返却する変換候補数を「1」 に設定しています。

5

 

5
uniqkey0
5

100個のユニークなローマ字で /henkan というAPIを100回叩くベンチマークです。

5

返却する変換候補数は「無制限」です。

5

ローマ字の例:

5
 "Aimai" "Ao" "Aoumigame" "Akakeitou" "Bangou" ... 100個
5

 

5

計測例

5

次の例は uniqkey0 のベンチマークを使った計測手順です。

3
 sekka-server: version 0.8.2
3
 OS : Mac OS X snow leopard
3
 辞書DB : LARGE辞書(407MByteのtch)
3
 ハードウェア: MacBook Pro '13
3
 CPU: 2.4 GHz Intel Core 2 Duo
3
 RAM: 4 GByte
5

 

5
何もキャッシュしない状態で計測
5
OSをリブートする(TokyoCabinetがDBをmmapした時のファイルシステムに対するバッファをクリアするため)
5
sekka-server , memcachedを起動する
5
sekka-benchmark uniqkey0を実行する
5
$ ./sekka-benchmark uniqkey0
5
----------------------------------------
5
[Uniqkey limit=0]
5
      user     system      total        real
5
....................................................................................................
5
  0.290000   0.600000   1.770000 (165.929929)
5

約166秒かかった。

5

 

5
memcachedが全件キャッシュした場合を計測
5
sekka-benchmark uniqkey0を再度実行する
5
$ ./sekka-benchmark uniqkey0
5
----------------------------------------
5
[Uniqkey limit=0]
5
      user     system      total        real
5
....................................................................................................
5
  0.040000   0.270000   1.200000 (  3.828723)
5

約4秒かかった。

5

 

5
memcachedのキャッシュをクリアして計測
5
memcachedを再起動する
5
memcached
5
^C
5
$ memcached
5

 

5
sekka-benchmark uniqkey0を実行する
5
$ ./sekka-benchmark uniqkey0
5
----------------------------------------
5
[Uniqkey limit=0]
5
      user     system      total        real
5
....................................................................................................
5
  0.050000   0.290000   1.230000 ( 21.766171)
5

約22秒かかった。

5

 

5

計測例の考察

2

sekka-serverはTokyoCabinetとmemcahcedのそれぞれのキャッシュ状況がパフォーマンスに影響を与えます。

2

OSの再起動直後や初めて変換する語句には処理時間がかかりますが、長時間運用すると頻繁に使う語句から順にリアルタイムに近い速度で反応が返ってくるようになります。

5

 

5

 

5

[以上]