Skip to content

Effect of replacing RMW with W in optimistic lock obsoletion

Laurynas Biveinis edited this page Jan 30, 2025 · 3 revisions

baseline, patch

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

  • 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%

  • 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%

  • 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%

Clone this wiki locally