mcbというベンチマークツールを使ってneoagentのベンチマークを取ってみる。
mcbは上のサイトにもあるように
gcc -Wall -lpthread -lnsl -o mcb mcb.c
でコンパイルして、
./mcb -c get -t 10 -n 1000 -l 100 -a 127.0.0.1 -p 11211
というふうに実行する。
neoagentは設定例だと/tmp/neoagent.sockにUnix Domain Socketを作るので、mcbでこれに接続する。
./mcb -c get -t 8 -n 1000 -l 100 -T UNIX_SOCKET -f /tmp/neoagent.sock
並列性能
去年ぐらいの社内勉強会で見た結果の追試。
同時リクエスト数を1から20まで変化させて、1秒あたりのgetの処理数を測る。
for i in {1..20}; do echo -n $i "\t"; ./mcb -c get -t $i -n $(( 3000 / $i )) -l 100 -a 127.0.0.1 -p 11211 | awk '$1 ~ /performance/{print $3}'; done
neoagentのworker_maxを0, 1, 4と変えたものと、素のmemcachedで秒処理数をプロットする。
社内勉強会のスライドでは1.5倍ぐらいになっていたのだが、今は並列化してもスコアが伸びないのかもしれない。
ちなみに環境はec2のm1.xlargeインスタンスでCPUは4コアでmemcachedとneoagentは同じサーバーで動かした。neoagentのバージョンはv0.8.8。
別ホストでのベンチ
memcachedとneoagentを同じサーバーで動かすのはベンチマークとしてどうかと思ったので、別ホストのmemcachedに繋ぐベンチマークを取ってみた。
ワーカーがゼロのときは特殊な動きをするようだ。