Bug#373152: Okay randomness isn't quite right.

2008-06-19 Thread James (Mike) Conley
I shouldn't say that I implement randomness since that isn't optimal: the
reason I picked IP address was that the general use is to avoid everything
running at once, by using a modulo of the IP address (and optimal spreading)
it meant that jobs on sequentially numbered systems would definitely not run
at the same time.  The algorithm I took was to invert the significance of
the bits in the IP address:

xxx.xxx.xxx.1 = 1/2
xxx.xxx.xxx.2 = 1/4
xxx.xxx.xxx.3 = 3/4
xxx.xxx.xxx.4 = 1/8
etc.

(In reality it takes the whole IPv4 or IPv6 address and not just the least
significant part, the xxx'es simplify showing though)

You then take these and multiply them by range possible for a crontab field
(0-59 for seconds, minutes; 0-23 for hours, 1-28 for day of month, 0-6 for
day of week).  This lets you write something like:

R * * * * /usr/local/bin/foo

to run a job at a random minute that is different for every 60 sequential
machines.  Very handy for server farms or lots of virtual machines.


Bug#373152:

2008-05-28 Thread James Mike Conley
I have a patch submitted with the maintainer that adds randomness based on
the IP address.  This should help with both virtual machines and large
server clusters.

-- 
Modest doubt is called the beacon of the wise.
William Shakespeare