Fork us on GitHub Follow us on Facebook Follow us on Twitter

Changes between Version 2 and Version 3 of ConcurrentHashTable

2012-08-08T11:23:23Z (7 years ago)
Adam Hraska

rcu read side scalability benchmark description


  • ConcurrentHashTable

    v2 v3  
    9595visible in the figures without zooming ;-).
     97=== RCU read side scalability ===
     100First, we examine the overhead of rcu read sections compared to acquiring a spinlock.
     101The figure above shows the number of traversals of a five element immutable list
     102depending on the number of threads/cpus used. More is better ;-).
     103- //ideal// - the list was accessed without any synchronization whatsoever
     104- //a-rcu// - each list traversal was protected by A-RCU
     105- //podzimek-rcu// - protected by the preemptible modification of Podzimek's RCU
     106- //spinlock// - guarded by an ordinary preemption disabling spinlock
     108A-RCU fares the best and has optimal scaling. On the other side, spinlock presents
     109negative scaling (ie the more cpus you throw at it, the slower it is). Podzimek's RCU
     110scales perfectly but has a greater base cost compared to A-RCU. In particular,
     111Podzimek-RCU's base cost is on par with a spinlock when running on a single cpu while
     112A-RCU's base cost is significantly lower than both Podzimek-RCU's and spinlock base cost.
     114To reproduce these results, switch to the kernel console and run:
     116chtbench 2 1 0 -w
     117chtbench 2 2 0 -w
     118chtbench 2 3 0 -w
     119chtbench 2 4 0 -w
     120chtbench 3 1 0 -w
     121chtbench 3 2 0 -w
     122chtbench 3 3 0 -w
     123chtbench 3 4 0 -w
     124chtbench 4 1 0 -w
     125chtbench 4 2 0 -w
     126chtbench 4 3 0 -w
     127chtbench 4 4 0 -w