rocksdb/options
anand76 35cdd3e71e MultiGet async IO across multiple levels (#10535)
Summary:
This PR exploits parallelism in MultiGet across levels. It applies only to the coroutine version of MultiGet. Previously, MultiGet file reads from SST files in the same level were parallelized. With this PR, MultiGet batches with keys distributed across multiple levels are read in parallel. This is accomplished by splitting the keys not present in a level (determined by bloom filtering) into a separate batch, and processing the new batch in parallel with the original batch.

Pull Request resolved: https://github.com/facebook/rocksdb/pull/10535

Test Plan:
1. Ensure existing MultiGet unit tests pass, updating them as necessary
2. New unit tests - TODO
3. Run stress test - TODO

No noticeable regression (<1%) without async IO -
Without PR: `multireadrandom :       7.261 micros/op 1101724 ops/sec 60.007 seconds 66110936 operations;  571.6 MB/s (8168992 of 8168992 found)`
With PR: `multireadrandom :       7.305 micros/op 1095167 ops/sec 60.007 seconds 65717936 operations;  568.2 MB/s (8271992 of 8271992 found)`

For a fully cached DB, but with async IO option on, no regression observed (<1%) -
Without PR: `multireadrandom :       5.201 micros/op 1538027 ops/sec 60.005 seconds 92288936 operations;  797.9 MB/s (11540992 of 11540992 found) `
With PR: `multireadrandom :       5.249 micros/op 1524097 ops/sec 60.005 seconds 91452936 operations;  790.7 MB/s (11649992 of 11649992 found) `

Reviewed By: akankshamahajan15

Differential Revision: D38774009

Pulled By: anand1976

fbshipit-source-id: c955e259749f1c091590ade73105b3ee46cd0007
2022-08-19 16:52:52 -07:00
..
cf_options.cc Add memtable per key-value checksum (#10281) 2022-08-12 13:51:32 -07:00
cf_options.h Add memtable per key-value checksum (#10281) 2022-08-12 13:51:32 -07:00
configurable.cc Option type info functions (#9411) 2022-05-13 04:57:08 -07:00
configurable_helper.h Fix some minor issues in the Customizable infrastructure (#8566) 2021-08-19 10:10:47 -07:00
configurable_test.cc Remove own ToString() (#9955) 2022-05-06 13:03:58 -07:00
configurable_test.h Move RegisterOptions into the Configurable API (#8223) 2021-04-26 03:13:24 -07:00
customizable.cc Option type info functions (#9411) 2022-05-13 04:57:08 -07:00
customizable_test.cc Make RateLimiter not Customizable (#10378) 2022-07-18 14:48:42 -07:00
db_options.cc Make RateLimiter not Customizable (#10378) 2022-07-18 14:48:42 -07:00
db_options.h Dynamically changeable `MemPurge` option (#10011) 2022-06-23 09:42:18 -07:00
options.cc MultiGet async IO across multiple levels (#10535) 2022-08-19 16:52:52 -07:00
options_helper.cc Add memtable per key-value checksum (#10281) 2022-08-12 13:51:32 -07:00
options_helper.h Support prepopulating/warming the blob cache (#10298) 2022-07-17 07:13:59 -07:00
options_parser.cc fix a false positive case of parsing table factory from options file (#10094) 2022-06-14 13:20:54 -07:00
options_parser.h Bring the Configurable options together (#5753) 2020-09-14 17:01:01 -07:00
options_settable_test.cc Add memtable per key-value checksum (#10281) 2022-08-12 13:51:32 -07:00
options_test.cc Change `bottommost_temperture` to `last_level_temperture` (#10471) 2022-08-08 14:36:34 -07:00