diff options
| author | Joshua Eilers <jeilers@fb.com> | 2017-04-06 11:03:53 -0700 |
|---|---|---|
| committer | Shreyas Siravara <sshreyas@fb.com> | 2017-09-08 00:19:53 +0000 |
| commit | 7f55c2e767440a22ef1e1ac225e3047d18b0f152 (patch) | |
| tree | a60b707680f30cb3209215fdcce18f9da50466b4 /xlators/performance | |
| parent | 868d082bd4384aab6b1b5ede2435c10a89ab8aa2 (diff) | |
[io-cache] New volume options for read sizes
Summary:
Two new volume options that control reads.
performance.io-cache.read-size
- Tells gluster how much it should try to read on each posix_readv call
performance.io-cache.min-cached-read-size
- Tells gluster the smallest files it should start caching, anything smaller is not cached
This is a port of D4844662 to 3.8
Change-Id: I5ba891906f97e514e7365cc34374619379434766
Reviewed-on: https://review.gluster.org/18235
Reviewed-by: Shreyas Siravara <sshreyas@fb.com>
CentOS-regression: Gluster Build System <jenkins@build.gluster.org>
Smoke: Gluster Build System <jenkins@build.gluster.org>
Diffstat (limited to 'xlators/performance')
| -rw-r--r-- | xlators/performance/io-cache/src/io-cache.c | 29 | ||||
| -rw-r--r-- | xlators/performance/io-cache/src/io-cache.h | 2 |
2 files changed, 26 insertions, 5 deletions
diff --git a/xlators/performance/io-cache/src/io-cache.c b/xlators/performance/io-cache/src/io-cache.c index f199b229bc2..b5533481f26 100644 --- a/xlators/performance/io-cache/src/io-cache.c +++ b/xlators/performance/io-cache/src/io-cache.c @@ -1147,7 +1147,7 @@ ioc_readv (call_frame_t *frame, xlator_t *this, fd_t *fd, } ioc_inode_unlock (ioc_inode); - if (!fd_ctx_get (fd, this, NULL)) { + if (!fd_ctx_get (fd, this, NULL) || size < table->min_cached_read_size) { /* disable caching for this fd, go ahead with normal readv */ STACK_WIND_TAIL (frame, FIRST_CHILD (frame->this), FIRST_CHILD (frame->this)->fops->readv, fd, @@ -1753,6 +1753,12 @@ reconfigure (xlator_t *this, dict_t *options) goto unlock; } + GF_OPTION_RECONF ("read-size", table->read_size, + options, size_uint64, unlock); + + GF_OPTION_RECONF ("min-cached-read-size", table->min_cached_read_size, + options, size_uint64, unlock); + GF_OPTION_RECONF ("cache-size", cache_size_new, options, size_uint64, unlock); if (!check_cache_size_ok (this, cache_size_new)) { @@ -1792,7 +1798,6 @@ init (xlator_t *this) dict_t *xl_options = NULL; uint32_t index = 0; int32_t ret = -1; - glusterfs_ctx_t *ctx = NULL; data_t *data = 0; uint32_t num_pages = 0; @@ -1820,7 +1825,12 @@ init (xlator_t *this) } table->xl = this; - table->page_size = this->ctx->page_size; + + GF_OPTION_INIT ("read-size", table->read_size, size_uint64, out); + + GF_OPTION_INIT ("min-cached-read-size", table->min_cached_read_size, size_uint64, out); + + table->page_size = table->read_size; GF_OPTION_INIT ("cache-size", table->cache_size, size_uint64, out); @@ -1903,8 +1913,7 @@ init (xlator_t *this) ret = 0; - ctx = this->ctx; - ioc_log2_page_size = log_base2 (ctx->page_size); + ioc_log2_page_size = log_base2 (table->page_size); LOCK_INIT (&table->statfs_cache.lock); /* Invalidate statfs cache */ @@ -2257,6 +2266,16 @@ struct volume_options options[] = { .description = "Maximum file size which would be cached by the " "io-cache translator." }, + { .key = {"read-size"}, + .type = GF_OPTION_TYPE_SIZET, + .default_value = "1MB", + .description = "Size of each posix read" + }, + { .key = {"min-cached-read-size"}, + .type = GF_OPTION_TYPE_SIZET, + .default_value = "64KB", + .description = "Minimum size to cache reads" + }, { .key = {"statfs-cache"}, .type = GF_OPTION_TYPE_BOOL, .default_value = "0", diff --git a/xlators/performance/io-cache/src/io-cache.h b/xlators/performance/io-cache/src/io-cache.h index da71b2f2371..9198225791b 100644 --- a/xlators/performance/io-cache/src/io-cache.h +++ b/xlators/performance/io-cache/src/io-cache.h @@ -162,6 +162,8 @@ struct ioc_table { uint64_t cache_used; uint64_t min_file_size; uint64_t max_file_size; + uint64_t read_size; + uint64_t min_cached_read_size; struct list_head inodes; /* list of inodes cached */ struct list_head active; struct list_head *inode_lru; |
