Changes between Version 2 and Version 3 of ConcurrentHashTable


Ignore:
Timestamp:
2012-08-08T11:23:23Z (12 years ago)
Author:
Adam Hraska
Comment:

rcu read side scalability benchmark description

Legend:

Unmodified
Added
Removed
Modified
  • ConcurrentHashTable

    v2 v3  
    9595visible in the figures without zooming ;-).
    9696
     97=== RCU read side scalability ===
     98[[Image(r1589-list-read.png)]]
    9799
     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
     107
     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.
     113
     114To reproduce these results, switch to the kernel console and run:
     115{{{
     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
     128}}}
     129
     130[[Image(r1589-list-upd.png)]]
     131[[Image(r1589-list-upd-trim.png)]]
     132[[Image(r1589-ht-lookup.png)]]
     133[[Image(r1589-ht-upd.png)]]