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/io-cache/src/io-cache.c | |
| 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/io-cache/src/io-cache.c')
| -rw-r--r-- | xlators/performance/io-cache/src/io-cache.c | 29 | 
1 files changed, 24 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",  | 
