cluster/tier: add watermarks and policy driver
authorDan Lambright <dlambrig@redhat.com>
Fri, 18 Sep 2015 04:49:06 +0000 (00:49 -0400)
committerDan Lambright <dlambrig@redhat.com>
Sat, 10 Oct 2015 13:00:04 +0000 (06:00 -0700)
commit672baab88fb7f32e844cd4be22e0924e4e0e83fc
tree8a05387b3508cc8f15ec448ab2e7b2baac897413
parenta4f982be9b21323038704069a56fb2448369d6a0
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>
tests/basic/tier/tier.t
xlators/cluster/dht/src/dht-common.h
xlators/cluster/dht/src/dht-rebalance.c
xlators/cluster/dht/src/dht-shared.c
xlators/cluster/dht/src/tier.c
xlators/cluster/dht/src/tier.h
xlators/mgmt/glusterd/src/glusterd-volume-set.c