• Robert Ricci's avatar
    Several changes, mostly targeted at jail and simulation-type · 3a345f8e
    Robert Ricci authored
    topologies.
    
    First, added a new 'summary' of the solution, when the '-u' option is
    given. It's a view of things from the physical side - prints out how
    many vnodes were mapped to each pnode, as well as how much bandwidth
    (trivial and non-trivial) was used on each node. For 'normal' nodes,
    we also print out all links used and how much bandwidth was used on
    each of them. For switches, we print only inter-switch links. This is
    amazingly helpful in getting an intuitive feel for how well assign is
    doing.
    
    Added a SIGINFO handler for the impatient (like me) to see things such
    as the current temperature, and current and best scores, while assign
    is running.
    
    Fixed a bug in which emulated links could get over-subscribed, as well
    as a few other misc. bugfixes.
    
    Changed the way assign goes through the list of a node's pclasses in
    random order - there were problems with the old way in which you could
    end up with a situation in which some pnodes were chosen with a much
    higher probability than others. Now, rather than treating the list as
    a ring and starting at a random place, we make a randomly-ordered list
    of the pclasseses, and go through it from start to finish.
    
    Did some work on dynamic pclasses so that we adjust the estimate of
    the neighborhood size to account for disabled pclasses (ie. pnodes
    that have nothing mapped to them yet.)
    
    Changed the way that find_link_to_switch() decides on the best link to
    use - the old method was doing very poorly at bin-packing emulated
    links into plinks. I now use a simple first-fit algorithm. This made a
    pretty big difference. I may try some other fast bin-packing
    approximation algorithm, but my main fear is that all of the good ones
    (such as the 'sort from largest to smallest, then do first-fit'
    algorithm) may require re-mapping other links. This might be slow,
    and/or it might make it difficult, if not impossible, to keep
    add_node() and remove_node() symmetric.
    
    Combinded direct_link() and find_link_to_switch() into
    find_best_link(), since they really do the same thing.
    
    Standardized on std::random() to get random numbers - previosuly, some
    calls were using std::rand().
    
    The big one: I added a find_pnode_connected() function that finds a
    random pnode that one of the vnode's neighbors in the virtual graph is
    assigned to. Then, with a random probability (given with the -c option
    on the command line), we try that function to find a pnode first (if
    it fails, we still call find_pnode() ). Of course, this is only really
    applicable when you have a reasonable degree of vnode-to-pnode
    multiplexing. In the test case I'm using, this managed to get 3x as
    much bandwidth into trivial links as just using find_pnode().
    3a345f8e
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...