making read caching configurable for blob store (#8607)
This commit is contained in:
parent
494dd1c5ed
commit
d68cd3493e
|
@ -142,6 +142,8 @@ Here is a complete list of valid parameters:
|
|||
|
||||
*multipart_min_part_size* (or *minps*) - Min part size for multipart uploads.
|
||||
|
||||
*enable_read_cache* (or *erc*) - Whether to enable read block cache.
|
||||
|
||||
*read_block_size* (or *rbs*) - Block size in bytes to be used for reads.
|
||||
|
||||
*read_ahead_blocks* (or *rab*) - Number of blocks to read ahead of requested offset.
|
||||
|
|
|
@ -175,11 +175,13 @@ Future<Reference<IAsyncFile>> BackupContainerS3BlobStore::readFile(const std::st
|
|||
if (usesEncryption()) {
|
||||
f = makeReference<AsyncFileEncrypted>(f, AsyncFileEncrypted::Mode::READ_ONLY);
|
||||
}
|
||||
f = makeReference<AsyncFileReadAheadCache>(f,
|
||||
m_bstore->knobs.read_block_size,
|
||||
m_bstore->knobs.read_ahead_blocks,
|
||||
m_bstore->knobs.concurrent_reads_per_file,
|
||||
m_bstore->knobs.read_cache_blocks_per_file);
|
||||
if (m_bstore->knobs.enable_read_cache) {
|
||||
f = makeReference<AsyncFileReadAheadCache>(f,
|
||||
m_bstore->knobs.read_block_size,
|
||||
m_bstore->knobs.read_ahead_blocks,
|
||||
m_bstore->knobs.concurrent_reads_per_file,
|
||||
m_bstore->knobs.read_cache_blocks_per_file);
|
||||
}
|
||||
return f;
|
||||
}
|
||||
|
||||
|
|
|
@ -220,6 +220,7 @@ void ClientKnobs::initialize(Randomize randomize) {
|
|||
|
||||
init( BLOBSTORE_CONCURRENT_WRITES_PER_FILE, 5 );
|
||||
init( BLOBSTORE_CONCURRENT_READS_PER_FILE, 3 );
|
||||
init( BLOBSTORE_ENABLE_READ_CACHE, true );
|
||||
init( BLOBSTORE_READ_BLOCK_SIZE, 1024 * 1024 );
|
||||
init( BLOBSTORE_READ_AHEAD_BLOCKS, 0 );
|
||||
init( BLOBSTORE_READ_CACHE_BLOCKS_PER_FILE, 2 );
|
||||
|
|
|
@ -88,6 +88,7 @@ S3BlobStoreEndpoint::BlobKnobs::BlobKnobs() {
|
|||
concurrent_lists = CLIENT_KNOBS->BLOBSTORE_CONCURRENT_LISTS;
|
||||
concurrent_reads_per_file = CLIENT_KNOBS->BLOBSTORE_CONCURRENT_READS_PER_FILE;
|
||||
concurrent_writes_per_file = CLIENT_KNOBS->BLOBSTORE_CONCURRENT_WRITES_PER_FILE;
|
||||
enable_read_cache = CLIENT_KNOBS->BLOBSTORE_ENABLE_READ_CACHE;
|
||||
read_block_size = CLIENT_KNOBS->BLOBSTORE_READ_BLOCK_SIZE;
|
||||
read_ahead_blocks = CLIENT_KNOBS->BLOBSTORE_READ_AHEAD_BLOCKS;
|
||||
read_cache_blocks_per_file = CLIENT_KNOBS->BLOBSTORE_READ_CACHE_BLOCKS_PER_FILE;
|
||||
|
@ -125,6 +126,7 @@ bool S3BlobStoreEndpoint::BlobKnobs::set(StringRef name, int value) {
|
|||
TRY_PARAM(concurrent_lists, cl);
|
||||
TRY_PARAM(concurrent_reads_per_file, crpf);
|
||||
TRY_PARAM(concurrent_writes_per_file, cwpf);
|
||||
TRY_PARAM(enable_read_cache, erc);
|
||||
TRY_PARAM(read_block_size, rbs);
|
||||
TRY_PARAM(read_ahead_blocks, rab);
|
||||
TRY_PARAM(read_cache_blocks_per_file, rcb);
|
||||
|
@ -162,6 +164,7 @@ std::string S3BlobStoreEndpoint::BlobKnobs::getURLParameters() const {
|
|||
_CHECK_PARAM(concurrent_lists, cl);
|
||||
_CHECK_PARAM(concurrent_reads_per_file, crpf);
|
||||
_CHECK_PARAM(concurrent_writes_per_file, cwpf);
|
||||
_CHECK_PARAM(enable_read_cache, erc);
|
||||
_CHECK_PARAM(read_block_size, rbs);
|
||||
_CHECK_PARAM(read_ahead_blocks, rab);
|
||||
_CHECK_PARAM(read_cache_blocks_per_file, rcb);
|
||||
|
|
|
@ -235,6 +235,7 @@ public:
|
|||
int BLOBSTORE_CONCURRENT_LISTS;
|
||||
int BLOBSTORE_CONCURRENT_WRITES_PER_FILE;
|
||||
int BLOBSTORE_CONCURRENT_READS_PER_FILE;
|
||||
int BLOBSTORE_ENABLE_READ_CACHE;
|
||||
int BLOBSTORE_READ_BLOCK_SIZE;
|
||||
int BLOBSTORE_READ_AHEAD_BLOCKS;
|
||||
int BLOBSTORE_READ_CACHE_BLOCKS_PER_FILE;
|
||||
|
|
|
@ -58,8 +58,8 @@ public:
|
|||
requests_per_second, list_requests_per_second, write_requests_per_second, read_requests_per_second,
|
||||
delete_requests_per_second, multipart_max_part_size, multipart_min_part_size, concurrent_requests,
|
||||
concurrent_uploads, concurrent_lists, concurrent_reads_per_file, concurrent_writes_per_file,
|
||||
read_block_size, read_ahead_blocks, read_cache_blocks_per_file, max_send_bytes_per_second,
|
||||
max_recv_bytes_per_second, sdk_auth;
|
||||
enable_read_cache, read_block_size, read_ahead_blocks, read_cache_blocks_per_file,
|
||||
max_send_bytes_per_second, max_recv_bytes_per_second, sdk_auth;
|
||||
bool set(StringRef name, int value);
|
||||
std::string getURLParameters() const;
|
||||
static std::vector<std::string> getKnobDescriptions() {
|
||||
|
@ -86,6 +86,7 @@ public:
|
|||
"concurrent_lists (or cl) Max concurrent list operations that can be in progress at once.",
|
||||
"concurrent_reads_per_file (or crps) Max concurrent reads in progress for any one file.",
|
||||
"concurrent_writes_per_file (or cwps) Max concurrent uploads in progress for any one file.",
|
||||
"enable_read_cache (or erc) Whether read block caching is enabled.",
|
||||
"read_block_size (or rbs) Block size in bytes to be used for reads.",
|
||||
"read_ahead_blocks (or rab) Number of blocks to read ahead of requested offset.",
|
||||
"read_cache_blocks_per_file (or rcb) Size of the read cache for a file in blocks.",
|
||||
|
|
Loading…
Reference in New Issue