summaryrefslogtreecommitdiffstats
path: root/xlators
diff options
context:
space:
mode:
authorErick Tryzelaar <idadesub@users.sourceforge.net>2009-07-10 17:23:28 +0000
committerAnand V. Avati <avati@dev.gluster.com>2009-07-16 00:37:59 -0700
commite40e361126d7843f1141c1568c39a10f8510cf42 (patch)
tree0b3595c3ab7e4c6a71de221213c5c36d0353c445 /xlators
parentf1313842a25d8d162db36ba8afb2a34b224f41ca (diff)
Add a random initial offset to the afr round robin index
This patch helps to distribute load across an afr cluster when you have clients with the same access patterns, such as in benchmarking or map-reduce. By randomly offsetting the initial read_child_rr, clients should distribute reads over the afr nodes on average. A better solution could be to randomly shuffle the children instead of chosing a different initial offset. This should average the reads better across the nodes, but I'm not sure if there are any other consequences to doing this. Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
Diffstat (limited to 'xlators')
-rw-r--r--xlators/cluster/afr/src/afr.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/xlators/cluster/afr/src/afr.c b/xlators/cluster/afr/src/afr.c
index a94f92600b0..118e0fc3dad 100644
--- a/xlators/cluster/afr/src/afr.c
+++ b/xlators/cluster/afr/src/afr.c
@@ -2494,6 +2494,9 @@ init (xlator_t *this)
i++;
}
+ /* Randomly pick the starting read child */
+ priv->read_child_rr = random() % priv->child_count;
+
ret = 0;
out:
return ret;