summaryrefslogtreecommitdiffstats
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
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>
-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 a94f92600..118e0fc3d 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;