Details
-
Improvement
-
Resolution: Fixed
-
Major
-
techdebt-backlog
-
Security Level: Public
-
None
-
ForestDB: Oct 26 - Nov 13
Description
After we partition the block cache into multiple shards, a spinlock 'file->lock' becomes a major bottleneck under multi-threaded workloads.
ForestDB's readers frequently call below internal small functions which grab file->lock and incur lock contentions:
filemgr_is_writable()
filemgr_get_pos()
filemgr_get_file_status()
filemgr_dirty_root_exist()
filemgr_get_header_bid()
We need to use atomic variables to eliminate lock contentions.