nfv/guest-agent/guest-scale-agent-2.0/scripts/offline_cpus

55 lines
2.3 KiB
Bash

#!/bin/bash
#
# Copyright(c) 2013-2016, Wind River Systems, Inc.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
#
# * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in
# the documentation and/or other materials provided with the
# distribution.
# * Neither the name of Wind River Systems nor the names of its
# contributors may be used to endorse or promote products derived
# from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
# Query the metadata server for the set of cpus that are supposed to be offline
# It will be in the form "set([])" for the empty set, and "set([1, 2, 3])" for the
# non-empty set.
CPUSET_OFFLINE=`wget -t 3 -T 5 -qO - http://169.254.169.254/latest/meta-data/offline_cpuset`
RC=$?
if [ $RC -ne 0 ]
then
logger -p daemon.err "${0}: unable to obtain "offline_cpuset" value. rc: ${RC}"
exit -1
fi
OFFLINE_CPUS=`echo ${CPUSET_OFFLINE}|grep -oE [0-9]+`
for CPU in $OFFLINE_CPUS
do
# Offline this cpu to match the underlying virtual machine.
echo 0 > /sys/devices/system/cpu/cpu${CPU}/online
RC=$?
if [ $RC -ne 0 ]
then
logger -p daemon.err "${0}: unable to offline cpu ${CPU}. rc: ${RC}"
exit -1
fi
done