• Robert Ricci's avatar
    Fix a bug that's over 10 years old · d7fb737d
    Robert Ricci authored
    I think this must get the award for oldest (frequently excercised) bug
    in the Emulab source. Thanks to the magic of the git pickaxe, I
    discovered that code with this problem was first committed Monday, May
    22, 2000, when it used to be in assign_hw/assign.cc
    
    assign used to use a priority queue to 'randomly' select unassigned
    nodes to try assigning. Turns out this is not very random! A node can
    get unlucky, get a very low random priority assigned to it, and get
    stuck in the queue for a very, very, very long time. As a result, I've
    seen assign try to re-assign the same node several thousand times in a
    row, when there are others waiting to be re-assigned. Of course, this is
    going to result in very poor exploration of the state space.
    
    I changed the unassigned node selection process to use a regular list,
    and select an item from the list at random at the time of item removal.
    This gets a much more even distribution of nodes, at the small cost of
    linear iteration over the list of unassigned nodes.  This should be a
    pretty minor cost, though, as iteration over this list should be cheap
    and the list itself should generally be pretty small.
    
    Also added some debugging statements.
    d7fb737d
Name
Last commit
Last update
account Loading commit data...
apache Loading commit data...
assign Loading commit data...
autoconf Loading commit data...
backend Loading commit data...
bugdb Loading commit data...
capture Loading commit data...
cdrom Loading commit data...
collab Loading commit data...
daikon Loading commit data...
db Loading commit data...
delay Loading commit data...
dhcpd Loading commit data...
discvr Loading commit data...
doc Loading commit data...
event Loading commit data...
firewall Loading commit data...
flash Loading commit data...
hw_config Loading commit data...
hyperviewer Loading commit data...
image-test Loading commit data...
install Loading commit data...
ipod Loading commit data...
lib Loading commit data...
mfs Loading commit data...
mote Loading commit data...
named Loading commit data...
node_usage Loading commit data...
os Loading commit data...
patches Loading commit data...
pelab Loading commit data...
protogeni Loading commit data...
pxe Loading commit data...
rc.d Loading commit data...
robots Loading commit data...
rpms Loading commit data...
security Loading commit data...
sensors Loading commit data...
sql Loading commit data...
ssl Loading commit data...
sysadmin Loading commit data...
tbsetup Loading commit data...
testsuite Loading commit data...
tip Loading commit data...
tmcd Loading commit data...
tools Loading commit data...
utils Loading commit data...
vis Loading commit data...
wiki Loading commit data...
www Loading commit data...
xmlrpc Loading commit data...
.gitattributes Loading commit data...
.gitignore Loading commit data...
.loc-ignore Loading commit data...
AGPL-COPYING Loading commit data...
GNUmakefile.in Loading commit data...
GNUmakerules Loading commit data...
GPL-COPYING Loading commit data...
LGPL-COPYING Loading commit data...
MOVED-TO-WIKI Loading commit data...
Makeconf.in Loading commit data...
README Loading commit data...
TODO Loading commit data...
TODO.plab Loading commit data...
VERSION Loading commit data...
WEBtemplate.in Loading commit data...
config.h.in Loading commit data...
configure Loading commit data...
configure.in Loading commit data...
defs-aerolab Loading commit data...
defs-calfeld-emulab Loading commit data...
defs-davidand-emulab Loading commit data...
defs-default Loading commit data...
defs-duerig-emulab Loading commit data...
defs-elabinelab Loading commit data...
defs-example Loading commit data...
defs-example-privatecnet Loading commit data...
defs-fbsd7 Loading commit data...
defs-fish-emulab Loading commit data...
defs-gatech Loading commit data...
defs-gtw-emulab Loading commit data...
defs-johnsond-emulab Loading commit data...
defs-kevina-emulab Loading commit data...
defs-kwebb-emulab Loading commit data...
defs-mike-emulab Loading commit data...
defs-newbold-emulab Loading commit data...
defs-newbold-macdb Loading commit data...
defs-ricci-emulab Loading commit data...
defs-shash-emulab Loading commit data...
defs-stoller-emulab Loading commit data...
defs-stoller-home Loading commit data...
defs-stoller-lbsdb Loading commit data...
defs-uky Loading commit data...
defs-wbsun-emulab Loading commit data...
defs-wide Loading commit data...