Last active
February 19, 2020 16:45
-
-
Save lorneli/40aa5f179fd51453c23aabec5ff75a8e to your computer and use it in GitHub Desktop.
Benchmark redis aof fsync policy
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
1.Test environment | |
4core 2gb (use 4core so background fsync thread used by AOF_FSYNC_EVERYSEC can execute on other core) | |
ubuntu server 14.04 | |
redis-version: 3.2.8 | |
2.Procedure | |
Disable rdb bgsave, aof rewrite in config to avoid other factors | |
Set 'appendfsync' entry tto 'no', 'everysec' and 'always' in turn | |
for each policy: | |
remove appendonly.aof file before starting redis server | |
start redis server | |
execute 'redis-benchmark -t set' | |
3.Result | |
**AOF_FSYNC_NO** | |
====== SET ====== | |
100000 requests completed in 0.87 seconds | |
50 parallel clients | |
3 bytes payload | |
keep alive: 1 | |
99.72% <= 1 milliseconds | |
99.88% <= 2 milliseconds | |
99.93% <= 4 milliseconds | |
100.00% <= 4 milliseconds | |
114416.48 requests per second | |
**AOF_FSYNC_EVERYSEC** | |
====== SET ====== | |
100000 requests completed in 0.82 seconds | |
50 parallel clients | |
3 bytes payload | |
keep alive: 1 | |
99.84% <= 1 milliseconds | |
99.95% <= 2 milliseconds | |
99.99% <= 3 milliseconds | |
100.00% <= 3 milliseconds | |
121951.22 requests per second | |
**AOF_FSYNC_ALWAYS** | |
====== SET ====== | |
100000 requests completed in 6.03 seconds | |
50 parallel clients | |
3 bytes payload | |
keep alive: 1 | |
0.69% <= 1 milliseconds | |
31.50% <= 2 milliseconds | |
78.39% <= 3 milliseconds | |
94.51% <= 4 milliseconds | |
96.67% <= 5 milliseconds | |
97.68% <= 6 milliseconds | |
98.32% <= 7 milliseconds | |
98.75% <= 8 milliseconds | |
99.01% <= 9 milliseconds | |
99.12% <= 10 milliseconds | |
99.17% <= 11 milliseconds | |
99.19% <= 12 milliseconds | |
99.26% <= 13 milliseconds | |
99.28% <= 17 milliseconds | |
99.29% <= 18 milliseconds | |
99.32% <= 19 milliseconds | |
99.33% <= 30 milliseconds | |
99.33% <= 31 milliseconds | |
99.38% <= 32 milliseconds | |
99.38% <= 33 milliseconds | |
99.39% <= 34 milliseconds | |
99.43% <= 35 milliseconds | |
99.46% <= 37 milliseconds | |
99.46% <= 38 milliseconds | |
99.50% <= 39 milliseconds | |
99.56% <= 40 milliseconds | |
99.58% <= 43 milliseconds | |
99.60% <= 51 milliseconds | |
99.61% <= 52 milliseconds | |
99.66% <= 53 milliseconds | |
99.68% <= 54 milliseconds | |
99.71% <= 57 milliseconds | |
99.74% <= 62 milliseconds | |
99.75% <= 63 milliseconds | |
99.78% <= 64 milliseconds | |
99.82% <= 65 milliseconds | |
99.84% <= 78 milliseconds | |
99.85% <= 79 milliseconds | |
99.86% <= 80 milliseconds | |
99.89% <= 86 milliseconds | |
99.90% <= 116 milliseconds | |
99.90% <= 117 milliseconds | |
99.93% <= 118 milliseconds | |
99.95% <= 263 milliseconds | |
99.96% <= 265 milliseconds | |
99.99% <= 291 milliseconds | |
100.00% <= 291 milliseconds | |
16575.50 requests per second | |
4. Conclusion | |
AOF_FSYNC_ALWYAS is much slower than AOF_FYSNC_EVERYSEC. When using AOF_FSYNC_ALWAYS, fsync function blocks | |
main thread handling new request. | |
AOF_FSYNC_EVERYSEC performs well. But I can't figure out why AOF_FSYNC_EVERYSEC is faster than AOF_FSYNC_NO. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment