vr: memory and swap optimizations (#2892)

This tries to provide a threshold based fix for #2873 where swappinness of VR is not used until last resort. By limiting swappiness unless actually needed, the VR system degradation can be avoided for most cases. The other change is around not starting baremetal-vr by default on all VRs, according to the spec https://cwiki.apache.org/confluence/display/CLOUDSTACK/Baremetal+Advanced+Networking+Support only vmware VRs need to run it and that too only as the last step of the setup/completion, so we don't need to run it all the time.

Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
This commit is contained in:
Rohit Yadav 2018-10-16 10:29:48 +05:30 committed by GitHub
parent 63f4d852d5
commit 933ee23104
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 30 additions and 7 deletions

View File

@ -226,11 +226,16 @@ public class BaremetalKickStartServiceImpl extends BareMetalPxeServiceBase imple
throw new CloudRuntimeException(String.format("please specify 'baremetal.internal.storage.server.ip', which is the http server/nfs server storing kickstart files and ISO files, in global setting"));
}
Pair<Boolean, String> ret = SshHelper.sshExecute(mgmtNic.getIPv4Address(), 3922, "root", getSystemVMKeyFile(), null, "systemctl start baremetal-vr");
if (!ret.first()) {
throw new CloudRuntimeException(String.format("failed to start baremetal agent in virtual router[id:%s]", vr.getId()));
}
List<String> tuple = parseKickstartUrl(profile);
String cmd = String.format("/opt/cloud/bin/prepare_pxe.sh %s %s %s %s %s %s", tuple.get(1), tuple.get(2), profile.getTemplate().getUuid(),
String.format("01-%s", nic.getMacAddress().replaceAll(":", "-")).toLowerCase(), tuple.get(0), nic.getMacAddress().toLowerCase());
s_logger.debug(String.format("prepare pxe on virtual router[ip:%s], cmd: %s", mgmtNic.getIPv4Address(), cmd));
Pair<Boolean, String> ret = SshHelper.sshExecute(mgmtNic.getIPv4Address(), 3922, "root", getSystemVMKeyFile(), null, cmd);
ret = SshHelper.sshExecute(mgmtNic.getIPv4Address(), 3922, "root", getSystemVMKeyFile(), null, cmd);
if (!ret.first()) {
throw new CloudRuntimeException(String.format("failed preparing PXE in virtual router[id:%s], because %s", vr.getId(), ret.second()));
}

View File

@ -60,3 +60,6 @@ net.ipv6.conf.all.forwarding = 0
net.ipv6.conf.all.accept_ra = 0
net.ipv6.conf.all.accept_redirects = 0
net.ipv6.conf.all.autoconf = 0
# Minimum swappiness without disabling it
vm.swappiness=1

View File

@ -0,0 +1,5 @@
[Journal]
Compress=yes
SystemMaxUse=40M
SystemMaxFileSize=10M
RuntimeMaxUse=20M

View File

@ -0,0 +1,12 @@
[Unit]
Description=CloudStack Baremetal VR service
After=network.target local-fs.target
[Install]
WantedBy=multi-user.target
[Service]
Type=simple
WorkingDirectory=/opt/cloud/bin
ExecStart=/usr/bin/python /opt/cloud/bin/baremetal-vr.py
Restart=on-failure

View File

@ -2,7 +2,7 @@
Description=CloudStack post-patching init script
After=cloud-early-config.service network.target local-fs.target
Before=ssh.service
Requires=network.service
Requires=networking.service
[Install]
WantedBy=multi-user.target

View File

@ -21,6 +21,9 @@
# Eject cdrom if any
eject || true
# Restart journald for setting changes to apply
systemctl restart systemd-journald
TYPE=$(grep -Po 'type=\K[a-zA-Z]*' /var/cache/cloud/cmdline)
if [ "$TYPE" == "router" ] || [ "$TYPE" == "vpcrouter" ] || [ "$TYPE" == "dhcpsrvr" ]
then
@ -59,8 +62,3 @@ fi
systemctl enable --now --no-block ssh
date > /var/cache/cloud/boot_up_done
if [ "$TYPE" == "router" ]
then
python /opt/cloud/bin/baremetal-vr.py &
fi