Description
In this issue we will describe 3 different experiments testing 4 different versions of single tier CacheLib. We will use the hit_ratio leader and follower workloads. I have listed the combinations of parameters since we won't need a full factorial design.
- HashTable experiment
- htBucketPower: default, 40% empty, 30
- htLockPower: default, 40% empty, 30
htLockPower must be less than or equal to htBucketPower so the combinations are
(default,default), (40%,default), (30, default) , (40%, 40%), (30, 40%), (30,30)
For leader workload - the total number of objects is 71M
- to keep at least 40% of slots free htBucketPower/htLockPower is - 28
For the follower workload - the total number of objects is 37M
- to keep at least 40% of slots free htBucketPower/htLockPower is - 27
The total number of experiments will be 48 (2 workloads * 6 configs * 4 cachelib versions). Each workload should take less than 3 minutes execution time (240M total ops/48 threads/5M ops/thread).
- Delay Experiments
- opsDelayNs levels: none, 100000, 1000000
- opsDelayBatch levels: none, 3, 25
- htBucketPower: 40% empty, htLockPower: 40% empty
The combinations of opsDelayNs and opsDelayBatch should be:
(none,none), (100000, 3), (1000000, 3) , (100000, 25), (1000000,25)
The total number of experiments will be 40 (2 workloads * 5 configs * 4 cachelib versions).
- OpRate Experiments
- opRatePerSec levels: none, 100K, 500K, 1M
- htBucketPower: 40% empty, htLockPower: 40% empty
The total number of experiments will be 32 (2 workloads * 4 configs * 4 cachelib versions).
For the above experiments use the hit_ratio leader and follower fb_obj workloads
- hit ratio leader/follower with fb_obj - target total number of ops to be 240M using 48 threads - 5M ops/thread
Versions to test (each are separate branches to pull)
- Upstream: https://github.com/facebook/CacheLib/tree/main, commit ba170d0
- Critical section patch: https://github.com/igchor/CacheLib-1/tree/optimize_mmcontainer_locking_no_combine
- Critical section patch with lock combining: https://github.com/igchor/CacheLib-1/tree/optimize_mmcontainer_locking_combine
- Critical section patch with lock combining and reinsert (single acquire) https://github.com/igchor/CacheLib-1/tree/optimize_mmcontainer_locking_combine_reinsert