Skip to content

Instantly share code, notes, and snippets.

@lorneli
Last active February 19, 2020 16:45
Show Gist options
  • Save lorneli/40aa5f179fd51453c23aabec5ff75a8e to your computer and use it in GitHub Desktop.
Save lorneli/40aa5f179fd51453c23aabec5ff75a8e to your computer and use it in GitHub Desktop.
Benchmark redis aof fsync policy
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