• Mike Hibler's avatar
    Performance improvements to the vnode startup path. · 87eed168
    Mike Hibler authored
    The bigest improvement happened on day one when I took out the 20 second sleep
    between vnode starts in bootvnodes. That appears to have been an artifact of
    an older time and an older Xen. Or, someone smarter than me saw the potential
    of getting bogged down for, oh say three weeks, trying to micro-optimize the
    process and instead just went for the conservative fix!
    
    Following day one, the ensuing couple of weeks was a long strange trip to
    find the maximum number of simultaneous vnode creations that could be done
    without failure. In that time I tried a lot of things, generated a lot of
    graphs, produced and tweaked a lot of new constants, and in the end, wound
    up with the same two magic numbers (3 and 5) that were in the original code!
    To distinguish myself, I added a third magic number (1, the loneliest of
    them all).
    
    All I can say is that now, the choice of 3 or 5 (or 1), is based on more
    solid evidence than before. Previously it was 5 if you had a thin-provisioning
    LVM, 3 otherwise. Now it is based more directly on host resources, as
    described in a long comment in the code, the important part of which is:
    
     #
     # if (dom0 physical RAM < 1GB) MAX = 1;
     # if (any swap activity) MAX = 1;
     #
     #    This captures pc3000s/other old machines and overloaded (RAM) machines.
     #
     # if (# physical CPUs <= 2) MAX = 3;
     # if (# physical spindles == 1) MAX = 3;
     # if (dom0 physical RAM <= 2GB) MAX = 3;
     #
     #    This captures d710s, Apt r320, and Cloudlab m510s. We may need to
     #    reconsider the latter since its single drive is an NVMe device.
     #    But first we have to get Xen working with them (UEFI issues)...
     #
     # else MAX = 5;
    
    In my defense, I did fix some bugs and stuff too (and did I mention
    the cool graphs?) See comments in the code and gitlab emulab/emulab-devel
    issue #148.
    87eed168
Name
Last commit
Last update
account Loading commit data...
apache Loading commit data...
apt Loading commit data...
assign Loading commit data...
autoconf Loading commit data...
autofs Loading commit data...
backend Loading commit data...
bugdb Loading commit data...
cdrom Loading commit data...
clientside 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...
fwrules 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...
mobile Loading commit data...
mote Loading commit data...
named Loading commit data...
node_usage Loading commit data...
ntpd 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...
.gitmodules 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.ac Loading commit data...
defs-apt Loading commit data...
defs-cloudlab-clemson Loading commit data...
defs-cloudlab-utah Loading commit data...
defs-cloudlab-wisc 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-gtw-emulab Loading commit data...
defs-johnsond-emulab Loading commit data...
defs-kwebb-apt Loading commit data...
defs-kwebb-cloudlab Loading commit data...
defs-kwebb-emulab Loading commit data...
defs-mike-emulab Loading commit data...
defs-ricci-emulab Loading commit data...
defs-stoller-apt 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-utahclient Loading commit data...
defs-wbsun-emulab Loading commit data...
defs-wide Loading commit data...
pnet-favicon.ico Loading commit data...