From e40e361126d7843f1141c1568c39a10f8510cf42 Mon Sep 17 00:00:00 2001 From: Erick Tryzelaar Date: Fri, 10 Jul 2009 17:23:28 +0000 Subject: 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 --- xlators/cluster/afr/src/afr.c | 3 +++ 1 file changed, 3 insertions(+) (limited to 'xlators/cluster') 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; -- cgit