1年半前ぐらいに社内でベンチマークしていた結果を公開しておく。オンプレミスからAWSへ移行するときの参考にした (Webサービスをデータセンター移行するときに必要となる技術要素 - ゆううきブログ]
環境
EC2
- redisbenchtest04: c4.xlarge
- CPU: Intel(R) Xeon(R) CPU E5-2666 v3 @ 2.90GHz
- SR-IOV有効 EC2でSR-IOVを使うときのNICドライバパラメータ検証 - ゆううきブログ
- 仮想化方式はHVM
- 物理2コア vCPU 4
オンプレミス
- redisbenchtest02: Dell R630 Xenの仮想ホスト
- CPU: Intel(R) Xeon(R) CPU E5-2670 v3 @ 2.30GHz
- Xen 4.4.1 PV on HVM PV on HVM - Xen
- 物理2コア vCPU 2
ベンチマーク手法
Redisに付属するredis-benchmarkコマンドを使った。バージョンはRedis 2.8.17に付属するものを利用した。 ベンチマーククライアントが利用するCPUコアとRedisサーバが利用するCPUコアが同一でないように考慮する。 両環境とも物理2コアであり、Redisは1スレッドで1コアしか使わないため、同じホスト上でベンチマーククライアントを実行して問題ないと判断した。 3回ずつ実行してほぼ結果に差分がないことを確認した。
結果
スループット(requests/sec)はEC2 c4.xlargeのほうがオンプレミスと比べて約1.2倍となる結果を得た。CPUクロック差は1.26倍であるため、だいたいCPUクロックに比例した結果を得た。
EC2
[y_uuki@redisbenchtest04 ~]$ redis-benchmark -t get,set -r 100000 -n 100000 -q SET: 175746.92 requests per second GET: 188323.91 requests per second [y_uuki@redisbenchtest04 ~]$ redis-benchmark -r 1000000 -n 100000 -t get,set,lpush,lpop -q SET: 185873.61 requests per second GET: 186915.88 requests per second LPUSH: 188323.91 requests per second LPOP: 186567.16 requests per second
オンプレミス
[y_uuki@redisbenchtest01 ~]$ redis-benchmark -t get,set -r 100000 -n 100000 -q SET: 147929.00 requests per second GET: 144927.53 requests per second [y_uuki@redisbenchtest02 ~]$ redis-benchmark -r 1000000 -n 100000 -t get,set,lpush,lpop -q SET: 139860.14 requests per second GET: 154798.75 requests per second LPUSH: 151515.14 requests per second LPOP: 131061.59 requests per second