Re: Question about random and rr scheduler

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Amar S. Tumballi wrote:
On Mon, Mar 3, 2008 at 4:27 PM, Craig Tierney <Craig.Tierney@xxxxxxxx>
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@xxxxxxxx)




[Index of Archives]     [Gluster Users]     [Ceph Users]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux