rocksdb/utilities
Maysam Yabandeh c292dc8540 WritePrepared: reduce prepared_mutex_ overhead (#5420)
Summary:
The patch reduces the contention over prepared_mutex_ using these techniques:
1) Move ::RemovePrepared() to be called from the commit callback when we have two write queues.
2) Use two separate mutex for PreparedHeap, one prepared_mutex_ needed for ::RemovePrepared, and one ::push_pop_mutex() needed for ::AddPrepared(). Given that we call ::AddPrepared only from the first write queue and ::RemovePrepared mostly from the 2nd, this will result into each the two write queues not competing with each other over a single mutex. ::RemovePrepared might occasionally need to acquire ::push_pop_mutex() if ::erase() ends up with calling ::pop()
3) Acquire ::push_pop_mutex() on the first callback of the write queue and release it on the last.
Pull Request resolved: https://github.com/facebook/rocksdb/pull/5420

Differential Revision: D15741985

Pulled By: maysamyabandeh

fbshipit-source-id: 84ce8016007e88bb6e10da5760ba1f0d26347735
2019-06-10 11:53:31 -07:00
..
backupable simplify include directive involving inttypes (#5402) 2019-06-06 13:56:07 -07:00
blob_db simplify include directive involving inttypes (#5402) 2019-06-06 13:56:07 -07:00
cassandra
checkpoint simplify include directive involving inttypes (#5402) 2019-06-06 13:56:07 -07:00
compaction_filters
convenience
leveldb_options
memory
merge_operators
option_change_migration
options simplify include directive involving inttypes (#5402) 2019-06-06 13:56:07 -07:00
persistent_cache simplify include directive involving inttypes (#5402) 2019-06-06 13:56:07 -07:00
simulator_cache
table_properties_collectors
trace
transactions WritePrepared: reduce prepared_mutex_ overhead (#5420) 2019-06-10 11:53:31 -07:00
ttl
write_batch_with_index
debug.cc
env_librados.cc
env_librados.md
env_librados_test.cc
env_mirror.cc
env_mirror_test.cc
env_timed.cc
env_timed_test.cc
merge_operators.h
object_registry_test.cc
util_merge_operators_test.cc