Skip to content

Benchmarking Critical Section #83

Closed
@byrnedj

Description

@byrnedj

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.

  1. 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).

  1. 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).

  1. 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)

  1. Upstream: https://github.com/facebook/CacheLib/tree/main, commit ba170d0
  2. Critical section patch: https://github.com/igchor/CacheLib-1/tree/optimize_mmcontainer_locking_no_combine
  3. Critical section patch with lock combining: https://github.com/igchor/CacheLib-1/tree/optimize_mmcontainer_locking_combine
  4. Critical section patch with lock combining and reinsert (single acquire) https://github.com/igchor/CacheLib-1/tree/optimize_mmcontainer_locking_combine_reinsert

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions