• Robert Ricci's avatar
    Fix dynamic pclasses, and make them the default for virtual nodes · c7e2d29e
    Robert Ricci authored
    again.
    
    One of the fixes changes the way in which we iterate through pclasses
    in find_pnode(). We used to treat the vector like a ring buffer, and
    start (randomly) someplace in the middle. This turns out to give some
    bad statistical properties when doing dynamic pclasses, since long
    chains of disabled pclasses will cause some pclasses to be selected
    more often. My old hack of just hopping around randomly in the
    disabled-pclass case was bad, because it's hard to tell when you've
    actually tried all the pclasses - so, we were getting false negatives
    where it was looking like there was no place available where we could
    map a vnode, which turned out to have worse effects than I had
    thought.
    
    So, now, we make a list of all the indices and randomize the order,
    then just iterate through that list.
    
    We also now count the number of pclasses that are enabled at every
    temperature step, and adjust the neighborhood size to remove them.
    This makes dynamic pclasses quite a bit faster - it cuts the time
    by 30% - 50% for my test case.
    
    Cleaned up find_pnode() by removing some #ifdef's that we don't use,
    and probably will never want to again - this makes the function almost
    readable!
    c7e2d29e
Name
Last commit
Last update
account Loading commit data...
apache Loading commit data...
assign Loading commit data...
autoconf Loading commit data...
capture Loading commit data...
cdrom Loading commit data...
db Loading commit data...
delay/linux Loading commit data...
dhcpd Loading commit data...
discvr Loading commit data...
doc Loading commit data...
event Loading commit data...
hw_config Loading commit data...
install Loading commit data...
ipod Loading commit data...
lib Loading commit data...
os Loading commit data...
patches Loading commit data...
pxe Loading commit data...
rc.d 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...
www Loading commit data...
xmlrpc Loading commit data...
BUGS Loading commit data...
COPYING Loading commit data...
GNUmakefile.in Loading commit data...
GNUmakerules Loading commit data...
Makeconf.in Loading commit data...
README Loading commit data...
TODO Loading commit data...
TODO.plab Loading commit data...
config.h.in Loading commit data...
configure Loading commit data...
configure.in Loading commit data...
defs-barb-emulab Loading commit data...
defs-barb-mini 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-example Loading commit data...
defs-gatech Loading commit data...
defs-kwebb-emulab Loading commit data...
defs-mini Loading commit data...
defs-newbold-emulab Loading commit data...
defs-newbold-macdb Loading commit data...
defs-newbold-mini Loading commit data...
defs-rchriste-emulab Loading commit data...
defs-ricci-emulab Loading commit data...
defs-ricci-mini Loading commit data...
defs-shash-emulab Loading commit data...
defs-shash-mini Loading commit data...
defs-stoller-emulab Loading commit data...
defs-stoller-home Loading commit data...
defs-stoller-mini Loading commit data...
defs-uky Loading commit data...
defs-wide Loading commit data...