Effect of replacing RMW with W in optimistic lock obsoletion - laurynas-biveinis/unodb GitHub Wiki

baseline, patch

Statistically significant speedups >= 1% (negative means slowdowns)

Key prefix

  • unpredictable_leaf_key_prefix_split<unodb::olc_db>: 2%
  • unpredictable_cut_key_prefix<unodb::olc_db>: 2%
  • unpredictable_prepend_key_prefix<unodb::olc_db>: 1%

N4

  • full_n4_random_insert<unodb::olc_db>/100: 1%
  • full_n4_random_insert<unodb::olc_db>/512: 1%
  • minimal_n4_sequential_insert<unodb::olc_db>/64: -1%
  • full_n4_sequential_delete<unodb::olc_db>/100: 4%
  • full_n4_sequential_delete<unodb::olc_db>/512: 4%
  • full_n4_sequential_delete<unodb::olc_db>/4096: 4%
  • full_n4_sequential_delete<unodb::olc_db>/32768: 5%
  • full_n4_sequential_delete<unodb::olc_db>/65534: 5%
  • full_n4_random_deletes<unodb::olc_db>/100: 4%
  • full_n4_random_deletes<unodb::olc_db>/512: 4%
  • full_n4_random_deletes<unodb::olc_db>/4096: 4%
  • full_n4_random_deletes<unodb::olc_db>/32768: 4%
  • full_n4_random_deletes<unodb::olc_db>/65534: 3%
  • full_n4_to_minimal_sequential_delete<unodb::olc_db>/100: 3%
  • full_n4_to_minimal_sequential_delete<unodb::olc_db>/512: 2%
  • full_n4_to_minimal_sequential_delete<unodb::olc_db>/4096: 4%
  • full_n4_to_minimal_sequential_delete<unodb::olc_db>/32768: 4%
  • full_n4_to_minimal_sequential_delete<unodb::olc_db>/65532: 2%
  • full_n4_to_minimal_random_delete<unodb::olc_db>/100: 2%
  • full_n4_to_minimal_random_delete<unodb::olc_db>/512: 4%
  • full_n4_to_minimal_random_delete<unodb::olc_db>/4096: 4%
  • full_n4_to_minimal_random_delete<unodb::olc_db>/32768: 3%
  • full_n4_to_minimal_random_delete<unodb::olc_db>/65532: 2%
  • shrink_node16_to_n4_sequentially<unodb::olc_db>/25: 3%
  • shrink_node16_to_n4_sequentially<unodb::olc_db>/64: 3%
  • shrink_node16_to_n4_sequentially<unodb::olc_db>/512: 3%
  • shrink_node16_to_n4_sequentially<unodb::olc_db>/4096: 4%
  • shrink_node16_to_n4_sequentially<unodb::olc_db>/16383: 4%
  • shrink_node16_to_n4_randomly<unodb::olc_db>/25: 3%
  • shrink_node16_to_n4_randomly<unodb::olc_db>/64: 3%
  • shrink_node16_to_n4_randomly<unodb::olc_db>/512: 3%
  • shrink_node16_to_n4_randomly<unodb::olc_db>/4096: 3%
  • shrink_node16_to_n4_randomly<unodb::olc_db>/16383: 3%

### N16

  • grow_n4_to_n16_sequentially<unodb::olc_db>/512: -1%
  • grow_n4_to_n16_sequentially<unodb::olc_db>/4096: -1%
  • grow_n4_to_n16_sequentially<unodb::olc_db>/16383: -1%
  • grow_n4_to_n16_randomly<unodb::olc_db>/20: -4%
  • grow_n4_to_n16_randomly<unodb::olc_db>/64: 2%
  • grow_n4_to_n16_randomly<unodb::olc_db>/512: 1%
  • n16_sequential_add<unodb::olc_db>/10: -1%
  • n16_sequential_add<unodb::olc_db>/64: -1%
  • n16_sequential_add<unodb::olc_db>/512: -1%
  • n16_sequential_add<unodb::olc_db>/4096: -1%
  • n16_sequential_add<unodb::olc_db>/16383: -1%
  • n16_random_add<unodb::olc_db>/10: -1%
  • n16_random_add<unodb::olc_db>/64: -1%
  • n16_random_add<unodb::olc_db>/512: -1%
  • n16_random_add<unodb::olc_db>/4096: -1%
  • n16_random_add<unodb::olc_db>/16383: -2%
  • minimal_n16_tree_full_scan<unodb::olc_db>/10: 1%
  • minimal_n16_tree_full_scan<unodb::olc_db>/64: -1%
  • minimal_n16_tree_full_scan<unodb::olc_db>/512: -1%
  • minimal_n16_tree_full_scan<unodb::olc_db>/16383: -1%
  • full_n16_tree_full_scan<unodb::olc_db>/246000: -1%
  • full_n16_tree_sequential_delete<unodb::olc_db>/512: 1%
  • full_n16_tree_sequential_delete<unodb::olc_db>/4096: 2%
  • full_n16_tree_sequential_delete<unodb::olc_db>/32768: -1%
  • full_n16_tree_sequential_delete<unodb::olc_db>/246000: 1%
  • full_n16_tree_random_delete<unodb::olc_db>/64: 2%
  • full_n16_tree_random_delete<unodb::olc_db>/512: 2%
  • full_n16_tree_random_delete<unodb::olc_db>/4096: 1%
  • full_n16_tree_random_delete<unodb::olc_db>/246000: 1%
  • shrink_n48_to_n16_sequentially<unodb::olc_db>/4: 3%
  • shrink_n48_to_n16_sequentially<unodb::olc_db>/8: 3%
  • shrink_n48_to_n16_sequentially<unodb::olc_db>/64: 3%
  • shrink_n48_to_n16_sequentially<unodb::olc_db>/512: 3%
  • shrink_n48_to_n16_sequentially<unodb::olc_db>/4096: 2%
  • shrink_n48_to_n16_sequentially<unodb::olc_db>/16383: 1%
  • shrink_n48_to_n16_randomly<unodb::olc_db>/4: 2%
  • shrink_n48_to_n16_randomly<unodb::olc_db>/8: 2%
  • shrink_n48_to_n16_randomly<unodb::olc_db>/64: 3%
  • shrink_n48_to_n16_randomly<unodb::olc_db>/512: 2%
  • shrink_n48_to_n16_randomly<unodb::olc_db>/4096: 2%
  • shrink_n48_to_n16_randomly<unodb::olc_db>/16383: 1%

### N48

  • grow_n16_to_n48_sequentially<unodb::olc_db>/8: 1%
  • grow_n16_to_n48_sequentially<unodb::olc_db>/64: 1%
  • grow_n16_to_n48_sequentially<unodb::olc_db>/512: 1%
  • grow_n16_to_n48_sequentially<unodb::olc_db>/4096: 1%
  • grow_n16_to_n48_sequentially<unodb::olc_db>/8192: 1%
  • grow_n16_to_n48_randomly<unodb::olc_db>/8: 1%
  • grow_n16_to_n48_randomly<unodb::olc_db>/64: 1%
  • grow_n16_to_n48_randomly<unodb::olc_db>/512: 1%
  • grow_n16_to_n48_randomly<unodb::olc_db>/4096: 1%
  • n48_sequential_add<unodb::olc_db>/2: 2%
  • n48_random_add<unodb::olc_db>/2: 1%
  • n48_random_add<unodb::olc_db>/8: -1%
  • n48_random_add<unodb::olc_db>/64: -1%
  • `full_n48_tree_sequential_deleteunodb::olc_db/192: -1%
  • full_n48_tree_random_delete<unodb::olc_db>/192: 1%
  • full_n48_tree_random_delete<unodb::olc_db>/32768: 2%
  • full_n48_tree_random_delete<unodb::olc_db>/196608: 2%
  • shrink_n256_to_n48_sequentially<unodb::olc_db>/4: 1%
  • shrink_n256_to_n48_sequentially<unodb::olc_db>/8: 1%
  • shrink_n256_to_n48_sequentially<unodb::olc_db>/64: 3%
  • shrink_n256_to_n48_sequentially<unodb::olc_db>/512: 2%
  • shrink_n256_to_n48_sequentially<unodb::olc_db>/2048: 1%
  • shrink_n256_to_n48_randomly<unodb::olc_db>/8: 1%
  • shrink_n256_to_n48_randomly<unodb::olc_db>/64: 3%
  • shrink_n256_to_n48_randomly<unodb::olc_db>/512: 2%

N256

  • grow_n48_to_n256_sequentially<unodb::olc_db>/2: 2%
  • grow_n48_to_n256_sequentially<unodb::olc_db>/8: 6%
  • grow_n48_to_n256_sequentially<unodb::olc_db>/64: 6%
  • grow_n48_to_n256_sequentially<unodb::olc_db>/512: 5%
  • grow_n48_to_n256_sequentially<unodb::olc_db>/2048: 5%
  • grow_n48_to_n256_randomly<unodb::olc_db>/2: 1%
  • grow_n48_to_n256_randomly<unodb::olc_db>/8: 8%
  • grow_n48_to_n256_randomly<unodb::olc_db>/64: 2%
  • grow_n48_to_n256_randomly<unodb::olc_db>/512: 2%
  • grow_n48_to_n256_randomly<unodb::olc_db>/2048: 3%
  • n256_sequential_add<unodb::olc_db>/512: -1%
  • n256_random_add<unodb::olc_db>/64: -1%
  • n256_random_add<unodb::olc_db>/512: -1%
  • minimal_n256_tree_full_scan<unodb::olc_db>/4: -2%
  • minimal_n256_tree_full_scan<unodb::olc_db>/8: -2%
  • minimal_n256_tree_full_scan<unodb::olc_db>/64: -2%
  • minimal_n256_tree_full_scan<unodb::olc_db>/512: -2%
  • minimal_n256_tree_full_scan<unodb::olc_db>/4096: -2%
  • minimal_n256_tree_random_gets<unodb::olc_db>/4: 2%
  • minimal_n256_tree_random_gets<unodb::olc_db>/8: 2%
  • minimal_n256_tree_random_gets<unodb::olc_db>/64: 2%
  • minimal_n256_tree_random_gets<unodb::olc_db>/512: 1%
  • minimal_n256_tree_random_gets<unodb::olc_db>/4096: 1%
  • full_n256_tree_full_scan<unodb::olc_db>/128: -3%
  • full_n256_tree_full_scan<unodb::olc_db>/512: -3%
  • full_n256_tree_full_scan<unodb::olc_db>/4096: -3%
  • full_n256_tree_full_scan<unodb::olc_db>/31768: -2%
  • full_n256_tree_full_scan<unodb::olc_db>/131064: -2%
  • full_n256_tree_random_gets<unodb::olc_db>/32768: -1%
  • full_n256_tree_random_gets<unodb::olc_db>/131064: -1%
  • full_n256_tree_sequential_delete<unodb::olc_db>/192: -1%
  • full_n256_tree_sequential_delete<unodb::olc_db>/512: -1%
  • full_n256_tree_sequential_delete<unodb::olc_db>/4096: -2%
  • full_n256_tree_sequential_delete<unodb::olc_db>/32768: -1%
  • full_n256_tree_sequential_delete<unodb::olc_db>/196608: -1%
  • full_n256_tree_random_delete<unodb::olc_db>/192: -1%
  • full_n256_tree_random_delete<unodb::olc_db>/512: -1%
  • full_n256_tree_random_delete<unodb::olc_db>/4096: -1%
  • full_n256_tree_random_delete<unodb::olc_db>/196608: -4%