rocksdb/file
Cheng Chang 91b7553293 Enable IO Uring in MultiGet in direct IO mode (#6815)
Summary:
Currently, in direct IO mode, `MultiGet` retrieves the data blocks one by one instead of in parallel, see `BlockBasedTable::RetrieveMultipleBlocks`.

Since direct IO is supported in `RandomAccessFileReader::MultiRead` in https://github.com/facebook/rocksdb/pull/6446, this PR applies `MultiRead` to `MultiGet` so that the data blocks can be retrieved in parallel.

Also, in direct IO mode and when data blocks are compressed and need to uncompressed, this PR only allocates one continuous aligned buffer to hold the data blocks, and then directly uncompress the blocks to insert into block cache, there is no longer intermediate copies to scratch buffers.
Pull Request resolved: https://github.com/facebook/rocksdb/pull/6815

Test Plan:
1. added a new unit test `BlockBasedTableReaderTest::MultiGet`.
2. existing unit tests and stress tests  contain tests against `MultiGet` in direct IO mode.

Reviewed By: anand1976

Differential Revision: D21426347

Pulled By: cheng-chang

fbshipit-source-id: b8446ae0e74152444ef9111e97f8e402ac31b24f
2020-05-14 23:26:26 -07:00
..
delete_scheduler_test.cc fix some spelling typos (#6464) 2020-02-28 14:14:03 -08:00
delete_scheduler.cc Create a thread in DeleteScheduler only when rate limit enabled (#6564) 2020-03-24 11:29:51 -07:00
delete_scheduler.h Create a thread in DeleteScheduler only when rate limit enabled (#6564) 2020-03-24 11:29:51 -07:00
file_prefetch_buffer.cc Pass a timeout to FileSystem for random reads (#6751) 2020-04-30 14:50:39 -07:00
file_prefetch_buffer.h Replace namespace name "rocksdb" with ROCKSDB_NAMESPACE (#6433) 2020-02-20 12:09:57 -08:00
file_util.cc Replace namespace name "rocksdb" with ROCKSDB_NAMESPACE (#6433) 2020-02-20 12:09:57 -08:00
file_util.h Pass a timeout to FileSystem for random reads (#6751) 2020-04-30 14:50:39 -07:00
filename.cc Find/purge obsolete blob files (#6807) 2020-05-07 09:32:51 -07:00
filename.h Find/purge obsolete blob files (#6807) 2020-05-07 09:32:51 -07:00
random_access_file_reader_test.cc Enable IO Uring in MultiGet in direct IO mode (#6815) 2020-05-14 23:26:26 -07:00
random_access_file_reader.cc sst_dump to reduce number of file reads (#6836) 2020-05-12 18:23:33 -07:00
random_access_file_reader.h Pass a timeout to FileSystem for random reads (#6751) 2020-04-30 14:50:39 -07:00
read_write_util.cc Replace namespace name "rocksdb" with ROCKSDB_NAMESPACE (#6433) 2020-02-20 12:09:57 -08:00
read_write_util.h Replace namespace name "rocksdb" with ROCKSDB_NAMESPACE (#6433) 2020-02-20 12:09:57 -08:00
readahead_raf.cc Replace namespace name "rocksdb" with ROCKSDB_NAMESPACE (#6433) 2020-02-20 12:09:57 -08:00
readahead_raf.h Replace namespace name "rocksdb" with ROCKSDB_NAMESPACE (#6433) 2020-02-20 12:09:57 -08:00
sequence_file_reader.cc Replace namespace name "rocksdb" with ROCKSDB_NAMESPACE (#6433) 2020-02-20 12:09:57 -08:00
sequence_file_reader.h Replace namespace name "rocksdb" with ROCKSDB_NAMESPACE (#6433) 2020-02-20 12:09:57 -08:00
sst_file_manager_impl.cc Replace namespace name "rocksdb" with ROCKSDB_NAMESPACE (#6433) 2020-02-20 12:09:57 -08:00
sst_file_manager_impl.h Replace namespace name "rocksdb" with ROCKSDB_NAMESPACE (#6433) 2020-02-20 12:09:57 -08:00
writable_file_writer.cc Move checksum calculation ahead of memory copy (#6844) 2020-05-14 14:58:14 -07:00
writable_file_writer.h prototype status check enforcement (#6798) 2020-05-08 12:40:43 -07:00