From 8c58d294fb3a6b374579680ef3788fadb78269f9 Mon Sep 17 00:00:00 2001 From: shravani Date: Thu, 10 Nov 2016 11:17:52 +0530 Subject: This patch contains scripts to update the host_isolcpus parameter to Numa node1 CPU's,binds the qemu process threads to the host_isolcpu processors and assigns the remaining isolcpus to run stress tool Change-Id: I894fd18666c1e9c041776c346b7b95abce808792 Signed-off-by: Shravani --- ci/envs/host-config | 24 ++++++++++++++++++++---- ci/envs/host-run-qemu.sh | 17 ++++++----------- 2 files changed, 26 insertions(+), 15 deletions(-) mode change 100644 => 100755 ci/envs/host-config diff --git a/ci/envs/host-config b/ci/envs/host-config old mode 100644 new mode 100755 index ce6243ce0..a6beb06b6 --- a/ci/envs/host-config +++ b/ci/envs/host-config @@ -1,3 +1,5 @@ +#!/bin/bash + ############################################################################## ## Copyright (c) 2015 Intel Corp. ## @@ -7,13 +9,27 @@ ## http://www.apache.org/licenses/LICENSE-2.0 ############################################################################### -# Isolated cpus for nfv, must be delimited with ',' -host_isolcpus=3,4 - # Number of huge pages to create and on which NUMA node -numa_node=0 +numa_node=1 huge_pages=2 # QEMU executable path and number of cpus for guest qemu=/usr/libexec/qemu-kvm guest_cpus=2 + +# Isolated cpus for nfv, must be given as a range '-' and Numa node1 CPU's should be considered +host_isolcpus=`lscpu | grep "NUMA node1 CPU(s)"| awk -F ':' '{print \$2}' | sed 's/[[:space:]]//g'` +first=$(echo ${host_isolcpus} | cut -f1 -d-) +last=$(echo ${host_isolcpus} | cut -f2 -d-) + +# Bind cpus from host_isolcpus range for QEMU processor threads +i=0 +while [ ${i} -lt ${guest_cpus} ]; do + qemu_cpu[$i]=${first} + i=`expr $i + 1` + first=`expr $first + 1` +done + +#Isolated cpus from host_isolcpus range to run Stress tool +stress_isolcpus=${first}-${last} +echo "Stress tool runs on $stress_isolcpus" diff --git a/ci/envs/host-run-qemu.sh b/ci/envs/host-run-qemu.sh index 400e9e306..9cd4b45c2 100755 --- a/ci/envs/host-run-qemu.sh +++ b/ci/envs/host-run-qemu.sh @@ -19,7 +19,7 @@ cpumask () { printf 0x%x ${m} } -qmp_sock="/tmp/qmp-sock-$$" +qmp_sock="/tmp/qmp-sock" #${qemu} -smp ${guest_cpus} -monitor unix:${qmp_sock},server,nowait -daemonize \ # -cpu host,migratable=off,+invtsc,+tsc-deadline,pmu=off \ @@ -30,25 +30,20 @@ qmp_sock="/tmp/qmp-sock-$$" # -device virtio-net-pci,netdev=guest0 \ # -nographic -serial /dev/null -parallel /dev/null -${qemu} -smp ${guest_cpus} -drive file=/root/guest1.qcow2 -daemonize \ +${qemu} -smp ${guest_cpus} -monitor unix:${qmp_sock},server,nowait \ + -drive file=/root/guest1.qcow2 -daemonize \ -netdev user,id=net0,hostfwd=tcp:$HOST_IP:5555-:22 \ -realtime mlock=on -mem-prealloc -enable-kvm -m 1G \ -mem-path /mnt/hugetlbfs-1g \ -device virtio-net-pci,netdev=net0 \ -i=0 -for c in `echo ${host_isolcpus} | sed 's/,/ /g'` ; do - cpu[$i]=${c} - i=`expr $i + 1` -done - threads=`echo "info cpus" | nc -U ${qmp_sock} | grep thread_id | cut -d= -f3` # Bind QEMU processor threads to RT CPUs i=0 for tid in ${threads} ; do - tid=`printf %d ${tid}` # this is required to get rid of cr at end - mask=`cpumask ${cpu[$i]}` - taskset -p ${mask} ${tid} + new_tid=`echo $tid | sed -e 's/[\r\n]//g'` # this is required to get rid of cr at end + mask=`cpumask ${qemu_cpu[$i]}` + taskset -p ${mask} ${new_tid} i=`expr $i + 1` done -- cgit 1.2.3-korg