EC2 RedisのMeltdown/Spectreパッチバージョン性能検証


Meltdownの脆弱性対応により軒並みサーバの性能が低下しているようです。
MeltdownとかSpectreとか騒ぎがあったので、Amazon Aurora(MySQL互換)R4インスタンス再テスト(mysqlslap)

自分はRedisを使い倒していることもあり、Redisでどの程度性能に影響がありそうかを実際に検証してみました。

環境

項目 OS kernel version redis version インスタンスタイプ
旧OS Amazon Linux 4.9.58-18.55.amzn1.x86_64 v2.8.24 c4.large
最新OS Amazon Linux 4.9.75-25.55.amzn1.x86_64 v2.8.24 c4.large

Redis少し古くてすみません…

ベンチマークコマンド

バンドルされているredis-benchmarkコマンドを利用して以下の軸で実行してみました。

# default
redis-benchmark
# setのみ100万回実行
redis-benchmark -t set -n 1000000 -r 100000000
# 100万個のランダム要素のリストを実行
redis-benchmark -r 1000000 -n 1000000 1 lpush mylist __rand_int__
# データサイズ1024byteで、3万リクエストを100クライアントで実行
redis-benchmark -d 1024 -n 30000 -r 30000 -c 100 -q

ベンチマーク結果

フルの実行結果は以下を参照下さい。

結果抜粋

# データサイズ1024byteで、3万リクエストを100クライアントで実行
redis-benchmark -d 1024 -n 30000 -r 30000 -c 100 -q

このベンチマークがまんべんなく実行されているので比較してみましょう

コマンド パッチ適用後(rps) パッチ適用前(rps) 性能比(%)
PING_INLINE 103092.78 123966.95 83.16
PING_BULK 101694.92 121457.49 83.72
SET 98039.22 111524.16 87.90
GET 97402.60 116279.08 83.76
INCR 103448.28 125000.00 82.75
LPUSH 100334.45 126050.41 79.59
LPOP 97087.38 119521.92 81.22
SADD 102739.73 124481.33 82.53
SPOP 101351.35 123966.95 81.75
LPUSH (needed to benchmark LRANGE) 100671.14 125523.02 80.20
LRANGE_100 (first 100 elements) 8949.88 9930.49 90.12
LRANGE_300 (first 300 elements) 2767.02 2904.44 95.26
LRANGE_500 (first 450 elements) 1395.22 1776.72 78.52
LRANGE_600 (first 600 elements) 1064.43 1134.52 93.82
MSET (10 keys) 38022.82 43988.27 86.43

パッチ適用後はやはり軒並み性能劣化しているようですね…
ちなみに何度か実行したり、別インスタンスで試してみても多少の上下はありましたが同じような結果になりました。

まとめ

どこかで「10% - 20%落ち」というのは目にしましたが、実際にそんな感じでした。
割とキリキリの性能で使うことが多いのでだいぶ辛い ;q