diff options
author | Dan Lambright <dlambrig@redhat.com> | 2015-09-18 00:49:06 -0400 |
---|---|---|
committer | Dan Lambright <dlambrig@redhat.com> | 2015-10-10 06:00:04 -0700 |
commit | 672baab88fb7f32e844cd4be22e0924e4e0e83fc (patch) | |
tree | 8a05387b3508cc8f15ec448ab2e7b2baac897413 /xlators/cluster/dht/src/dht-common.h | |
parent | a4f982be9b21323038704069a56fb2448369d6a0 (diff) |
cluster/tier: add watermarks and policy driver
This fix introduces infrastructure to support different
policies for promotion and demotion.
Currently the tier feature automatically promotes and demotes
files periodically based on access. This is good for testing
but too stringent for most real workloads. It makes it
difficult to fully utilize a hot tier- data will be demoted
before it is touched- its unlikely a 100GB hot SSD will have
all its data touched in a window of time.
A new parameter "mode" allows the user to pick promotion/demotion
polcies.
The "test mode" will be used for *.t and other general testing.
This is the current mechanism.
The "cache mode" introduces watermarks. The watermarks
represent levels of data residing on the hot tier.
"cache mode" policy:
The % the hot tier is full is called P.
Do not promote or demote more than D MB or F files.
A random number [0-100] is called R.
Rules for migration:
if (P < watermark_low) don't demote, always promote.
if (P >= watermark_low) && (P < watermark_hi) demote if R < P; promote if R > P.
if (P > watermark_hi) always demote, don't promote.
gluster volume set {vol} cluster.watermark-hi %
gluster volume set {vol} cluster.watermark-low %
gluster volume set {vol} cluster.tier-max-mb {D}
gluster volume set {vol} cluster.tier-max-files {F}
gluster volume set {vol} cluster.tier-mode {test|cache}
Change-Id: I157f19667ec95aa1d53406041c1e3b073be127c2
BUG: 1257911
Signed-off-by: Dan Lambright <dlambrig@redhat.com>
Reviewed-on: http://review.gluster.org/12039
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Atin Mukherjee <amukherj@redhat.com>
Diffstat (limited to 'xlators/cluster/dht/src/dht-common.h')
-rw-r--r-- | xlators/cluster/dht/src/dht-common.h | 28 |
1 files changed, 26 insertions, 2 deletions
diff --git a/xlators/cluster/dht/src/dht-common.h b/xlators/cluster/dht/src/dht-common.h index c48bf5800b9..95ca7067806 100644 --- a/xlators/cluster/dht/src/dht-common.h +++ b/xlators/cluster/dht/src/dht-common.h @@ -332,6 +332,29 @@ struct dht_container { dict_t *migrate_data; }; +typedef enum tier_mode_ { + TIER_MODE_NONE = 0, + TIER_MODE_TEST, + TIER_MODE_WM +} tier_mode_t; + +typedef struct gf_tier_conf { + int is_tier; + int watermark_hi; + int watermark_low; + int watermark_last; + fsblkcnt_t blocks_total; + fsblkcnt_t blocks_used; + int percent_full; + uint64_t max_migrate_bytes; + int max_migrate_files; + tier_mode_t mode; + int tier_promote_frequency; + int tier_demote_frequency; + uint64_t st_last_promoted_size; + uint64_t st_last_demoted_size; +} gf_tier_conf_t; + struct gf_defrag_info_ { uint64_t total_files; uint64_t total_data; @@ -352,8 +375,7 @@ struct gf_defrag_info_ { gf_boolean_t stats; uint32_t new_commit_hash; gf_defrag_pattern_list_t *defrag_pattern; - int tier_promote_frequency; - int tier_demote_frequency; + gf_tier_conf_t tier_conf; /*Data Tiering params for scanner*/ uint64_t total_files_promoted; @@ -1088,5 +1110,7 @@ int32_t dht_set_local_rebalance (xlator_t *this, dht_local_t *local, struct iatt *stbuf, struct iatt *prebuf, struct iatt *postbuf, dict_t *xdata); +void +dht_build_root_loc (inode_t *inode, loc_t *loc); #endif/* _DHT_H */ |