[Gluster-devel] Question about random and rr scheduler
Craig Tierney
Craig.Tierney at noaa.gov
Tue Mar 4 15:39:54 UTC 2008
Amar S. Tumballi wrote:
> On Mon, Mar 3, 2008 at 4:27 PM, Craig Tierney <Craig.Tierney at noaa.gov>
> wrote:
>
>> I setting up Gluster (1.3.7) with two servers. I first
>> tried configuring the clients as round-robin (rr). When I try and write
>> to the filesystem for the first time, all of the files go
>> to the first brick. Subsequent writes will alternate between
>> the two bricks. When I try random, the first file is always
>> created on the first brick. Subsequent writes always go to
>> the first brick (never the second).
>>
>
> As the name suggests 'random' scheduler just calls random() and it just does
> % with the number of clients. Hence, not much control over it by user side
> right now.
>
>
>
>> What I want is round-robin, or a working random. However,
>> for round-robin to work for me, I need the chosen server to
>> be random, not always the first one.
>>
>> In the long-term, it wouldn't really matter because everything
>> would average out. However, I am creating filesystems that
>> will be temporary, so I need the right behavior in the short term.
>>
>> Should random do what I need? Should I look in the code
>> and see how to get the Round-Robin schedule to start with
>> a random index?
>>
>
> Just initialize index variable in rr scheduler to start with a random
> number. should not be much of a work..
>
>
I modified the rr scheduler to use a random index at initialization.
I like the behavior much better.
--- glusterfs-1.3.7/scheduler/rr/src/rr.c 2007-10-05 05:57:12.000000000 +0000
+++ ../glusterfs-1.3.7/scheduler/rr/src/rr.c 2008-03-04 14:53:10.191215255 +0000
@@ -49,7 +49,10 @@
trav_xl = trav_xl->next;
}
rr_buf->child_count = index;
- rr_buf->sched_index = 0;
+
+ srandom(time(NULL)); /* Initialize the seed */
+ rr_buf->sched_index = random()%index; /* Randomize the initial index */
+
rr_buf->array = calloc (index + 1, sizeof (struct rr_sched_struct));
trav_xl = xl->children;
index = 0;
Craig
--
Craig Tierney (craig.tierney at noaa.gov)
More information about the Gluster-devel
mailing list