diff options
author | Michael Chapman <woppin@gmail.com> | 2016-05-09 17:38:54 +1000 |
---|---|---|
committer | Michael Chapman <woppin@gmail.com> | 2016-05-24 23:19:33 +1000 |
commit | fb0f275cd373aec28a8a970ced0f1d20ca8abbfc (patch) | |
tree | a221f3632d7ad4d839a7e7f451f0623dabe7e83d /build | |
parent | be03cde24377105b340bbd2d5acae84617ffb7c6 (diff) |
Add pinning support
Add support for CPU pinning of libvirt guests and also
restricting host processes to selected CPUs via isolcpus.
Hugepage support is added using the same mechanism as
isolcpus, along with a perf scenario where all 3 performance
options are enabled.
Deploy options are now parsed in python
JIRA: APEX-127
JIRA: APEX-105
JIRA: APEX-106
Change-Id: I438e80fb88e596cc017595d43bc1efda1001325c
opnfv-tht-pr: 8
Signed-off-by: Michael Chapman <woppin@gmail.com>
Diffstat (limited to 'build')
-rw-r--r-- | build/build_perf_image.sh | 38 | ||||
-rwxr-xr-x | build/overcloud-full.sh | 8 | ||||
-rw-r--r-- | build/set_perf_images.sh | 31 | ||||
-rw-r--r-- | build/setkernelparam.sh | 27 | ||||
-rwxr-xr-x | build/undercloud.sh | 8 |
5 files changed, 110 insertions, 2 deletions
diff --git a/build/build_perf_image.sh b/build/build_perf_image.sh new file mode 100644 index 00000000..0a3e3d0f --- /dev/null +++ b/build/build_perf_image.sh @@ -0,0 +1,38 @@ +#!/bin/bash +############################################################################## +# Copyright (c) 2016 Red Hat Inc. +# Michael Chapman <michapma@redhat.com> +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## + +ROLE=$1 +shift +CATEGORY=$1 +shift +KEY=$1 +shift +VALUE=$1 +shift + +IMAGE=$ROLE-overcloud-full.qcow2 + +# Create image copy for this role +if [ ! -f $IMAGE ] ; then + cp overcloud-full.qcow2 $IMAGE +fi + +if [ "$CATEGORY" == "nova" ]; then + if [ "$KEY" == "libvirtpin" ]; then + sudo sed -i "s/#LibvirtCPUPinSet:.*/LibvirtCPUPinSet: '${VALUE}'/" /usr/share/openstack-tripleo-heat-templates/environments/numa.yaml + fi +fi + +if [ "$CATEGORY" == "kernel" ]; then + LIBGUESTFS_BACKEND=direct virt-customize \ + --run-command "bash -x /root/setkernelparam.sh $KEY $VALUE" \ + -a $IMAGE +fi + diff --git a/build/overcloud-full.sh b/build/overcloud-full.sh index 065201f8..d0ee3f01 100755 --- a/build/overcloud-full.sh +++ b/build/overcloud-full.sh @@ -29,5 +29,13 @@ LIBGUESTFS_BACKEND=direct virt-customize \ --run-command "echo 'nf_conntrack_proto_sctp' > /etc/modules-load.d/nf_conntrack_proto_sctp.conf" \ -a overcloud-full_build.qcow2 +################################### +##### Add CPU pinning script ##### +################################### + +LIBGUESTFS_BACKEND=direct virt-customize \ + --upload ../setkernelparam.sh:/root \ + -a overcloud-full_build.qcow2 + mv -f overcloud-full_build.qcow2 overcloud-full.qcow2 popd > /dev/null diff --git a/build/set_perf_images.sh b/build/set_perf_images.sh new file mode 100644 index 00000000..ea31c7fa --- /dev/null +++ b/build/set_perf_images.sh @@ -0,0 +1,31 @@ +#!/bin/bash + +############################################################################## +# Copyright (c) 2016 Red Hat Inc. +# Michael Chapman <michapma@redhat.com> +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## + +for ROLE in $@; do + if [ -f $ROLE-overcloud-full.qcow2 ]; then + echo "Uploading $ROLE-overcloud-full.qcow2 " + KERNEL=$(glance image-show overcloud-full | grep 'kernel_id' | cut -d '|' -f 3 | xargs) + RAMDISK=$(glance image-show overcloud-full | grep 'ramdisk_id' | cut -d '|' -f 3 | xargs) + glance image-create --name $ROLE-overcloud-full --disk-format qcow2 --file $ROLE-overcloud-full.qcow2 --container-format bare --property ramdisk_id=$RAMDISK --property kernel_id=$KERNEL + fi + + if [ "$ROLE" == "Controller" ]; then + sed -i "s/overcloud-full/Controller-overcloud-full" opnfv-environment.yaml + fi + + if [ "$ROLE" == "Compute" ]; then + sudo sed -i "s/NovaImage: overcloud-full/Compute-overcloud-full/" /usr/share/openstack-tripleo-heat-templates/environments/numa.yaml + fi + + if [ "$ROLE" == "BlockStorage" ]; then + sudo sed -i "s/BlockStorageImage: overcloud-full/BlockStorage-overcloud-full/" /usr/share/openstack-tripleo-heat-templates/environments/numa.yaml + fi +done diff --git a/build/setkernelparam.sh b/build/setkernelparam.sh new file mode 100644 index 00000000..b6986d6c --- /dev/null +++ b/build/setkernelparam.sh @@ -0,0 +1,27 @@ +#!/bin/bash + +############################################################################## +# Copyright (c) 2016 Red Hat Inc. +# Michael Chapman <michapma@redhat.com> +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## + +GRUBCONF='/boot/grub2/grub.conf' + +if [ "$1" == "" ]; then + echo "No kernel parameter name provided, not modifying grub.conf" + exit 1 +fi + +if [ "$2" == "" ]; then + echo "No kernel parameter value provided, not modifying grub.conf" + exit 1 +fi + +echo "Setting $1=$2 in $GRUBCONF" +echo "GRUB_CMDLINE_LINUX=\"\$GRUB_CMDLINE_LINUX $1=$2\"" >> /etc/default/grub +grub2-mkconfig > $GRUBCONF +exit 0 diff --git a/build/undercloud.sh b/build/undercloud.sh index ed4f2b34..04c2667f 100755 --- a/build/undercloud.sh +++ b/build/undercloud.sh @@ -43,7 +43,7 @@ if [ "$PR_NUMBER" != "" ]; then if [ "$MERGED" == "False" ]; then REF=$(python -c "import json; print json.loads('''$PR'''.replace('\n', '').replace('\r', ''))['head']['ref']") echo "Setting GitHub Ref to: $REF" - REPO=$(python -c "import json; print json.loads('''$PR'''.replace('\n', '').replace('\r', ''))['head']['repo']['git_url']") + REPO=$(python -c "import json; print json.loads('''$PR'''.replace('\n', '').replace('\r', ''))['head']['repo']['clone_url']") echo "Setting GitHub URL to: $REPO" fi fi @@ -70,5 +70,9 @@ LIBGUESTFS_BACKEND=direct virt-customize \ --upload ../virtual-environment.yaml:/home/stack/ \ -a undercloud.qcow2 -popd > /dev/null +# Add performance image scripts +LIBGUESTFS_BACKEND=direct virt-customize --upload ../build_perf_image.sh:/home/stack \ + --upload ../set_perf_images.sh:/home/stack \ + -a undercloud.qcow2 +popd > /dev/null |