122 lines
4.9 KiB
Bash
Executable File
122 lines
4.9 KiB
Bash
Executable File
#!/bin/bash
|
|
# usage ./functions.sh
|
|
|
|
#################################################################################
|
|
# Copyright (c) International Business Machines Corp., 2008 #
|
|
# #
|
|
# This program is free software; you can redistribute it and/or modify #
|
|
# it under the terms of the GNU General Public License as published by #
|
|
# the Free Software Foundation; either version 2 of the License, or #
|
|
# (at your option) any later version. #
|
|
# #
|
|
# This program is distributed in the hope that it will be useful, #
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of #
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See #
|
|
# the GNU General Public License for more details. #
|
|
# #
|
|
# You should have received a copy of the GNU General Public License #
|
|
# along with this program; if not, write to the Free Software #
|
|
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA #
|
|
# #
|
|
#################################################################################
|
|
# Name Of File: myfunctions.sh #
|
|
# #
|
|
# Description: This file has functions for the setup for testing memory #
|
|
# controller. setup includes creating controller device, #
|
|
# mounting it with cgroup filesystem with option memory and #
|
|
# creating groups in it. #
|
|
# #
|
|
# Functions: setup(): creaes /dev/memctl, mounts cgroup fs on it, creates #
|
|
# groups in that etc. #
|
|
# setmemlimits(): Sets up memory limits for different groups #
|
|
# usage(): Shows the usage of this file. #
|
|
# cleanup(): Does full system cleanup #
|
|
# #
|
|
# Author: Sudhir Kumar <skumar@linux.vnet.ibm.com> #
|
|
# #
|
|
# History: #
|
|
# #
|
|
# DATE NAME EMAIL DESC #
|
|
# #
|
|
# 15/03/08 Sudhir Kumar <skumar@linux.vnet.ibm.com> Created this test #
|
|
# #
|
|
#################################################################################
|
|
|
|
# Write the cleanup function
|
|
cleanup ()
|
|
{
|
|
echo "Cleanup called";
|
|
rm -f memctl_task_* 2>/dev/null
|
|
rmdir /dev/memctl/group* 2> /dev/null
|
|
umount /dev/memctl 2> /dev/null
|
|
rmdir /dev/memctl 2> /dev/null
|
|
}
|
|
# Create /dev/memctl & mount the cgroup file system with memory controller
|
|
#clean any group created eralier (if any)
|
|
|
|
setup ()
|
|
{
|
|
if [ -e /dev/memctl ]
|
|
then
|
|
echo "WARN:/dev/memctl already exist..overwriting";
|
|
cleanup;
|
|
mkdir /dev/memctl;
|
|
else
|
|
mkdir /dev/memctl
|
|
fi
|
|
mount -t cgroup -omemory cgroup /dev/memctl 2> /dev/null
|
|
if [ $? -ne 0 ]
|
|
then
|
|
echo "ERROR: Could not mount cgroup filesystem on /dev/memctl..Exiting test";
|
|
cleanup;
|
|
exit -1;
|
|
fi
|
|
|
|
# Group created earlier may again be visible if not cleaned properly...so clean them
|
|
if [ -e /dev/memctl/group_1 ]
|
|
then
|
|
rmdir /dev/memctl/group*
|
|
echo "WARN: Earlier groups found and removed...";
|
|
fi
|
|
|
|
# Create different groups
|
|
for i in $(seq 1 $NUM_GROUPS)
|
|
do
|
|
group=group_$i;
|
|
mkdir /dev/memctl/$group;# 2>/dev/null
|
|
if [ $? -ne 0 ]
|
|
then
|
|
echo "ERROR: Can't create $group...Check your permissions..Exiting test";
|
|
cleanup;
|
|
exit -1;
|
|
fi
|
|
done
|
|
}
|
|
|
|
# The usage of the script file
|
|
usage()
|
|
{
|
|
echo "Could not start memory controller test";
|
|
echo "usage: run_memctl_test.sh test_num";
|
|
echo "Skipping the memory controller test...";
|
|
}
|
|
|
|
# Function to set memory limits for different groups
|
|
setmemlimits()
|
|
{
|
|
for i in $(seq 1 $NUM_GROUPS)
|
|
do
|
|
limit=MEMLIMIT_GROUP_${i};
|
|
eval limit=\$$limit;
|
|
echo -n $limit >/dev/memctl/group_$i/memory.limit_in_bytes;
|
|
if [ $? -ne 0 ]
|
|
then
|
|
echo "Error in setting the memory limits for group_$i"
|
|
cleanup;
|
|
exit -1;
|
|
fi;
|
|
done
|
|
}
|
|
|
|
|