Hi
This patch creates the framework for controllers testcases in LTP. This also
creates the first and second testcase for cpu controller and adds some
documentation.
<cpuctl1.patch>
Signed-off-by: Sudhir Kumar <[EMAIL PROTECTED]>
Index: ltp-full-20071130/runtest/controllers
===================================================================
--- /dev/null
+++ ltp-full-20071130/runtest/controllers
@@ -0,0 +1,2 @@
+#DESCRIPTION:Resource Management testing
+controllers test_controllers.sh
Index: ltp-full-20071130/testcases/kernel/Makefile
===================================================================
--- ltp-full-20071130.orig/testcases/kernel/Makefile
+++ ltp-full-20071130/testcases/kernel/Makefile
@@ -1,4 +1,4 @@
-SUBDIRS = numa containers include fs io ipc mem pty sched security syscalls
+SUBDIRS = numa containers controllers include fs io ipc mem pty sched security
syscalls
UCLINUX_SUBDIRS = syscalls
all:
Index: ltp-full-20071130/testcases/kernel/controllers/Makefile
===================================================================
--- /dev/null
+++ ltp-full-20071130/testcases/kernel/controllers/Makefile
@@ -0,0 +1,25 @@
+SUBDIRS = cpuctl
+CHECK_CPUCTL = $(shell grep -w cpu /proc/cgroups|cut -f1)
+all:
+ @set -e;
+ifeq ($(CHECK_CPUCTL),cpu)
+
+ for i in $(SUBDIRS); do $(MAKE) -C $$i $@ ;done;
+else
+ echo "Kernel is not compiled with cpu controller support";
+endif
+
+install:
+ @set -e; \
+ ln -f test_controllers.sh ../../bin/test_controllers.sh;
+
+ifeq ($(CHECK_CPUCTL),cpu)
+
+ for i in $(SUBDIRS); do $(MAKE) -C $$i install ; done; \
+ chmod ugo+x test_controllers.sh;
+else
+ echo "Kernel is not compiled with cpu controller support";
+endif
+
+clean:
+ @set -e; for i in $(SUBDIRS); do $(MAKE) -C $$i clean ; done
Index: ltp-full-20071130/testcases/kernel/controllers/README
===================================================================
--- /dev/null
+++ ltp-full-20071130/testcases/kernel/controllers/README
@@ -0,0 +1,38 @@
+The complete dir tree is for testcases for resource management testing of
linux kernel.
+For the test plan please refer to the file testplan.txt
+
+--------------
+***WARNING:***
+--------------
+The test creates the cpu controller device as /dev/cpuctl. In case you already
have
+/dev/cpuctl it may be overwritten. So please rename it to have a backup of
your file.
+
+
+FILES DESCRIPTION:
+
+testplan.txt
+------------
+A brief description of the plan for resource management testing.
+
+test_controllers.sh
+-------------------
+This is the main script file that starts the test. It first checks if cpu
controller
+is enabled. If not enabled then it will not run the test and will exit giving
warning.
+
+README
+------
+This file.
+
+cpuctl
+------
+Directory containing the cpu controller testcases. A similar directory will be
created for
+any new controller.
+
+Makefile
+--------
+The usual Makefile to conduct all the tests.
+
+Before starting compilation this file checks if the kernel is supporting the
cpu controller.
+If yes it enters lower directory and compiles the source files otherwise exits
warning to user.
+Hence the user has to take care of the fact that the test runs or just quiets.
+(Your kernel needs to be 2.6.24-rc1 onwards with proper config options)
Index: ltp-full-20071130/testcases/kernel/controllers/cpuctl/Makefile
===================================================================
--- /dev/null
+++ ltp-full-20071130/testcases/kernel/controllers/cpuctl/Makefile
@@ -0,0 +1,16 @@
+CFLAGS += -Wall
+CPPFLAGS += -I../../../../include
+LDLIBS += -lm -L../../../../lib/ -lltp
+
+SRCS = $(wildcard *.c)
+
+TARGETS = $(patsubst %.c,%,$(SRCS))
+
+all: $(TARGETS)
+
+clean:
+ rm -f $(TARGETS) *.o
+
+install:
+ @set -e; for i in $(TARGETS) run_cpuctl_test.sh ; do ln -f $$i
../../../bin/$$i ; chmod +x $$i ; done
+
Index: ltp-full-20071130/testcases/kernel/controllers/cpuctl/README
===================================================================
--- /dev/null
+++ ltp-full-20071130/testcases/kernel/controllers/cpuctl/README
@@ -0,0 +1,65 @@
+
+TEST SUITE:
+
+The directory cpuctl contains the tests related to the cpu controller.
+At present there is only 1 testcase but it is the first test case in it's
+series of test cases and further testcases will be added in the forthcoming
+release of LTP
+
+TEST AIM:
+
+The aim of the test is to find any dependency of cpu controller on exact value
+of shares to schedule the tasks. For example if there are two groups running
+1 task each then they must get the cpu time in the same ratio irrespective of
+the share values i.e. share ratios 1:2, 10:20, 100:200, 1000:2000 etc should
+give the same cpu usage for each group.
+
+FILES DESCRIPTION:
+
+cpuctl_enabled_check.sh
+-----------------------
+This file is in 1 directory up and is the threshold to run the test.
+This script file checks the kernel version and if FAIR_GROUP_SCHEDULER has been
+compiled in the kernel. If not then the test is not run and user is asked if
+he wants the new kernel be compiled with proper configuration and then run the
test.
+
+cpuctl_test01.c
+---------------
+The test case for cpu controller testing. This basicaly runs a task in a group
+under cpu controller. Each task runs for an interval TIME_INTERVAL seconds and
+reports the total time it could run on all cpus(for convinience given in % ).
+
+After say n TIME_INTERVAL it modifies it's shares and again report the cpu
+usage.
+
+run_cpuctl_test.sh
+----------
+This file contains the script which does setup for the test. It creates a
+/dev/cpuctl directory, mounts cgroup filesystem on it with cpu. It then creates
+a number(n) of groups in /dev/cpuctl and fires (n) tasks to run at the same
time.
+
+Makefile
+--------
+
+The usual makefile for this directory
+
+README:
+--------
+The one you have gone through
+
+$LTPROOT/output/cpuctl_results.txt
+--------------
+This file will be created to log the results once the test is run. It contains
the test
+results which are numbers and following is a description which will help to
understand
+the results.
+
+The cpu time for each group(task ) is calculated in %. There are two outcomes
of the test:
+
+1. A group should get cpu time in the same ratio as it's shares.
+
+2. This time should not change with the changes in share values while the
ratio in those
+ values is same.
+
+NOTE: In case 1 a variation of 1-2 % is acceptable.
+
+
Index: ltp-full-20071130/testcases/kernel/controllers/cpuctl/cpuctl_test01.c
===================================================================
--- /dev/null
+++ ltp-full-20071130/testcases/kernel/controllers/cpuctl/cpuctl_test01.c
@@ -0,0 +1,187 @@
+/******************************************************************************/
+/*
*/
+/* Copyright (c) International Business Machines Corp., 2007
*/
+/*
*/
+/* 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
+/*
*/
+/******************************************************************************/
+
+/******************************************************************************/
+/*
*/
+/* File: cpuctl_test01.c
*/
+/*
*/
+/* Description: This is a c program that tests the cpucontroller fairness of
*/
+/* scheduling the tasks according to their group shares. This
*/
+/* testcase tests the ability of the cpu controller to provide
*/
+/* fairness for share values (absolute).
*/
+/*
*/
+/* Total Tests: 2
*/
+/*
*/
+/* Test Name: cpu_controller_test01
*/
+/*
*/
+/* Test Assertion
*/
+/* Please refer to the file cpuctl_testplan.txt
*/
+/*
*/
+/* Author: Sudhir Kumar [EMAIL PROTECTED] */
+/*
*/
+/* History:
*/
+/* Created- 20/12/2007 -Sudhir Kumar [EMAIL PROTECTED] */
+/*
*/
+/******************************************************************************/
+
+/* Standard Include Files */
+#include <unistd.h>
+#include <math.h>
+#include <signal.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/resource.h>
+#include <sys/syscall.h>
+#include <sys/time.h>
+#include <sys/types.h>
+#include <time.h>
+#include <unistd.h>
+
+#include "test.h" /* LTP harness APIs*/
+
+#define TIME_INTERVAL 60 /* Time interval in seconds*/
+#define NUM_INTERVALS 3 /* How many iterations of TIME_INTERVAL */
+#define NUM_SETS 7 /* How many share values (with same ratio)*/
+#define MULTIPLIER 10 /* decides the rate at which share value gets
multiplied*/
+
+extern int Tst_count;
+char *TCID = "cpu_controller_test01";
+int TST_TOTAL = 1;
+pid_t scriptpid;
+extern void
+cleanup()
+{
+ kill (scriptpid, SIGUSR1);/* Inform the shell to do cleanup*/
+ tst_exit (); /* Report exit status*/
+}
+
+int write_to_file (char * file, const char* mode, unsigned int value);
+void signal_handler_alarm (int signal );
+int timer_expired = 0;
+
+int main(int argc, char* argv[])
+{
+
+ int num_cpus; /* To calculate cpu time in %*/
+ char mygroup[32], mytaskfile[32], mysharesfile[32], ch;
+ pid_t pid;
+ int my_group_num, /* A number attached with a group*/
+ fd, /* A descriptor to open a fifo for
synchronized start*/
+ first_counter =0, /* To take n number of readings*/
+ second_counter=0; /* To track number of times the base
value of shares has been changed*/
+ double total_cpu_time, /* Accumulated cpu time*/
+ delta_cpu_time, /* Time the task could run on cpu(s)
(in an interval)*/
+ prev_cpu_time=0;
+ struct rusage cpu_usage;
+ time_t current_time, prev_time, delta_time;
+ unsigned long int myshares = 1; /* Simply the base value to start with*/
+ struct sigaction newaction, oldaction;
+ /* Signal handling for alarm*/
+ sigemptyset (&newaction.sa_mask);
+ newaction.sa_handler = signal_handler_alarm;
+ newaction.sa_flags=0;
+ sigaction (SIGALRM, &newaction, &oldaction);
+
+ /* Check if all parameters passed are correct*/
+ if ((argc < 5) || ((my_group_num = atoi(argv[1])) <= 0) || ((scriptpid
= atoi(argv[3])) <= 0) || ((num_cpus = atoi(argv[4])) <= 0))
+ {
+ tst_brkm (TBROK, cleanup, "Invalid input parameters\n");
+ }
+
+ myshares *= my_group_num;
+ sprintf(mygroup,"%s", argv[2]);
+ sprintf(mytaskfile, "%s", mygroup);
+ sprintf(mysharesfile, "%s", mygroup);
+ strcat (mytaskfile,"/tasks");
+ strcat (mysharesfile,"/cpu.shares");
+ pid = getpid();
+ write_to_file (mytaskfile, "a", pid); /* Assign the task to it's
group*/
+ write_to_file (mysharesfile, "w", myshares);
+
+ fd = open ("./myfifo", 0);
+ if (fd == -1)
+ {
+ tst_brkm (TBROK, cleanup, "Could not open fifo for
synchronization");
+ }
+
+ fprintf(stdout,"\ntask-%d SHARES=%lu\n",my_group_num, myshares);
+ read (fd, &ch, 1); /* To block all tasks here and fire
them up at the same time*/
+ prev_time = time (NULL); /* Note down the time*/
+
+ while (1)
+ {
+ /* Need to run some cpu intensive task, which also frequently
checks the timer value*/
+ double f = 274.345, mytime; /*just a float number to take
sqrt*/
+ alarm (TIME_INTERVAL);
+ timer_expired = 0;
+ while (!timer_expired) /* Let the task run on cpu for
TIME_INTERVAL*/
+ f = sqrt (f*f); /* Time of this operation should not be
high otherwise we can
+ * exceed the TIME_INTERVAL to measure
cpu usage
+ */
+ current_time = time (NULL);
+ delta_time = current_time - prev_time; /* Duration in
case it is not exact TIME_INTERVAL*/
+
+ getrusage (0, &cpu_usage);
+ total_cpu_time = (cpu_usage.ru_utime.tv_sec +
cpu_usage.ru_utime.tv_usec * 1e-6 + /* user time*/
+ cpu_usage.ru_stime.tv_sec +
cpu_usage.ru_stime.tv_usec * 1e-6) ; /* system time*/
+ delta_cpu_time = total_cpu_time -
prev_cpu_time;
+
+ prev_cpu_time = total_cpu_time;
+ prev_time = current_time;
+ if (delta_time > TIME_INTERVAL)
+ mytime = (delta_cpu_time * 100) / (delta_time
* num_cpus);
+ else
+ mytime = (delta_cpu_time * 100) /
(TIME_INTERVAL * num_cpus);
+
+ fprintf (stdout,"PID: %u\ttask-%d:cpu time --->
%6.3f\%(%fs) --->%lu(shares)\tinterval:%lu\n",getpid(),my_group_num, mytime,
delta_cpu_time, myshares, delta_time);
+ first_counter++;
+
+ if (first_counter >= NUM_INTERVALS) /* Take n sets
of readings for each shares value*/
+ {
+ first_counter = 0;
+ second_counter++;
+ if (second_counter >= NUM_SETS)
+ exit (0); /* This task is
done with its job*/
+ myshares = MULTIPLIER * myshares; /* Keep
same ratio but change values*/
+ write_to_file (mysharesfile, "w", myshares);
+ fprintf(stdout,"\ntask-%d
SHARES=%lu\n",my_group_num, myshares);
+ }/* end if*/
+ }/* end while*/
+}/* end main*/
+
+
+int write_to_file (char *file, const char *mode, unsigned int value)
+{
+ FILE *fp;
+ fp = fopen (file, mode);
+ if (fp == NULL)
+ {
+ tst_brkm (TBROK, cleanup, "Could not open file %s for writing",
file);
+ }
+ fprintf (fp, "%u\n", value);
+ fclose (fp);
+ return 0;
+}
+
+void signal_handler_alarm (int signal)
+{
+ timer_expired = 1;
+}
Index: ltp-full-20071130/testcases/kernel/controllers/cpuctl/cpuctl_testplan.txt
===================================================================
--- /dev/null
+++ ltp-full-20071130/testcases/kernel/controllers/cpuctl/cpuctl_testplan.txt
@@ -0,0 +1,48 @@
+The cpucontroller testplan includes a complete set of testcases that test the
cpu controller
+in different scenarios. So this testcase is the first in it's series.
+
+**This testcase tests the cpu controller under flat hierarchy.**
+
+
+The test plan for this testcase is as below:
+
+First of all mount the cpu controller on /dev/cpuctl and create n groups. The
number of
+groups should be > the number of cpus for checking scheduling fairness(as we
will run 1
+task per group). then we create say n groups. By default each group is
assigned 1024
+shares. The cpu controller schedules the tasks in different groups on the
basis of the
+shares assigned to that group. So the cpu usage of a task depends on the
amount of shares
+it's group has out of the total number of shares(no upper limit). Let us say
that we have
+3 groups(1 task each) A,B,C each having 1, 2, 3 shares respectively. Hence if
the tasks are
+running infinitely they are supposed to get 16.66%, 33.33%, 50% cpu time
respectively. This
+test case tests that each group should get the cpu time in the same(above)
ratio irrespective
+of the shares values provided the ratio is not changed i.e. the cpu time per
group should not
+change if we change the shares from 1, 2, 3 to 100, 200, 300 or to 10K, 20K,
30K etc.
+
+How to view the results:
+-----------------------
+
+Say if there are n groups then
+
+total share weight = grp1 share + grp2 shares +......upto n grps
+
+then expected time of any grp (say grp1)
+ =100 * (grp1 share) /(total share weight) %
+
+Note:-
+(*If there were say 2 task in this group then both task might devide the time
of this group
+ *and it would create no effect on tasks in other group. So a task will always
get time from
+ *it's group time only and will never affect other groups share of time )
+
+
+The cpu time for each group(task ) is calculated in %. There are two outcomes
of the test:
+
+1. A group should get cpu time in the same ratio as it's shares.
+
+2. This time should not change with the changes in share values while the
ratio in those
+ values is same.
+
+NOTE: In case 1 a variation of 1-2 % is acceptable.
+
+(remember here we have 1 task per group)
+
+For any other information please refer to cgroup.txt in kernel documentation.
Index: ltp-full-20071130/testcases/kernel/controllers/cpuctl/run_cpuctl_test.sh
===================================================================
--- /dev/null
+++ ltp-full-20071130/testcases/kernel/controllers/cpuctl/run_cpuctl_test.sh
@@ -0,0 +1,200 @@
+#!/bin/bash
+# usage ./runcpuctl_test.sh
+
+#################################################################################
+# Copyright (c) International Business Machines Corp., 2007
#
+#
#
+# 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
+#
#
+#################################################################################
+# Name Of File: run_cpuctl_test.sh
#
+#
#
+# Description: This file runs the setup for testing cpucontroller.
#
+# After setup it runs some of the tasks in different groups.
#
+# setup includes creating controller device, mounting it with
#
+# cgroup filesystem with option cpu and creating groups in it.
#
+#
#
+# Functions: get_num_groups(): decides number of groups based on num of
cpus #
+# setup(): creaes /dev/cpuctl, mounts cgroup fs on it, creates
#
+# groups in that, creates fifo to fire tasks at one time.
#
+#
#
+# Precaution: Avoid system use by other applications/users to get fair and
#
+# appropriate results
#
+#
#
+# Author: Sudhir Kumar <[EMAIL PROTECTED]> #
+#
#
+# History:
#
+#
#
+# DATE NAME EMAIL DESC
#
+#
#
+# 20/12/07 Sudhir Kumar <[EMAIL PROTECTED]> Created this test #
+#
#
+#################################################################################
+
+
+export TCID="cpuctl_test01";
+export TST_TOTAL=1;
+export TST_COUNT=1;
+
+RC=0; # return code from functions
+NUM_CPUS=1; # at least 1 cpu is there
+NUM_GROUPS=2; # min number of groups
+
+PWD=`pwd`
+cd $LTPROOT/testcases/bin/
+
+get_num_groups() # Number of tasks should be >= number of cpu's (to
check scheduling fairness)
+{
+ NUM_CPUS=`cat /proc/cpuinfo | grep -w processor | wc -l`
+ num_grps=$(echo "$NUM_CPUS * 1.5"|bc) # temp variable num_grps
+ int_part=`echo $num_grps | cut -d"." -f1`
+ dec_part=`echo $num_grps | cut -d"." -f2`
+
+ if [ $dec_part -gt 0 ]
+ then
+ NUM_GROUPS=$(echo "$int_part + 1"|bc)
+ else
+ NUM_GROUPS=$int_part;
+ fi
+}
+
+# Write the cleanup function
+cleanup ()
+{
+ echo "Cleanup called"
+ rm -f cpuctl_task_* 2>/dev/null
+ rmdir /dev/cpuctl/group_* 2> /dev/null
+ umount /dev/cpuctl 2> /dev/null
+ rmdir /dev/cpuctl 2> /dev/null
+ rm -f myfifo 2>/dev/null
+
+}
+ # Create /dev/cpuctl & mount the cgroup file system with cpu controller
+ #clean any group created eralier (if any)
+
+setup ()
+{
+ if [ -e /dev/cpuctl ]
+ then
+ echo "WARN:/dev/cpuctl already exist..overwriting"; # or a
warning ?
+ cleanup;
+ mkdir /dev/cpuctl;
+ else
+ mkdir /dev/cpuctl
+ fi
+ mount -t cgroup -ocpu cgroup /dev/cpuctl 2> /dev/null
+ if [ $? -ne 0 ]
+ then
+ echo "ERROR: Could not mount cgroup filesystem on
/dev/cpuctl..Exiting test";
+ cleanup;
+ exit -1;
+ fi
+
+ # Group created earlier may again be visible if not cleaned
properly...so clean them
+ if [ -e /dev/cpuctl/group_1 ]
+ then
+ rmdir /dev/cpuctl/group*
+ echo "WARN: Earlier groups found and removed...";
+ fi
+
+ #Create a fifo to make all tasks wait on it
+ mkfifo myfifo 2> /dev/null;
+ if [ $? -ne 0 ]
+ then
+ echo "ERROR: Can't create fifo...Check your
permissions..Exiting test";
+ cleanup;
+ exit -1;
+ fi
+
+ # Create different groups
+ i=1;
+ while [ $i -le $NUM_GROUPS ]
+ do
+ group=group_$i;
+ mkdir /dev/cpuctl/$group;# 2>/dev/null
+ if [ $? -ne 0 ]
+ then
+ echo "ERROR: Can't create $group...Check your
permissions..Exiting test";
+ cleanup;
+ exit -1;
+ fi
+ i=`expr $i + 1`
+ done
+}
+
+########################## main #######################
+ echo "TEST: CPU CONTROLLER TESTING";
+ echo "RUNNING SETUP.....";
+ get_num_groups;
+ if [ $NUM_GROUPS -lt 2 ]
+ then
+ NUM_GROUPS=2; # min num of groups for testing
+ fi
+
+ setup;
+
+ # Trap the signal from any abnormaly terminated task
+ # and kill all others and let cleanup be called
+ trap 'echo "signal caught from task"; killall cpuctl_task_*;' SIGUSR1;
+
+ echo "TEST STARTED: Please avoid using system while this test executes";
+ #Check if c source file has been compiled and then run it in
different groups
+ if [ -f cpuctl_test01 ]
+ then
+ echo `date` >> $LTPROOT/output/cpuctl_results.txt;
+ for i in $(seq 1 $NUM_GROUPS)
+ do
+ cp cpuctl_test01 cpuctl_task_$i 2>/dev/null;
+ chmod +x cpuctl_task_$i;
+ ./cpuctl_task_$i $i /dev/cpuctl/group_$i $$ $NUM_CPUS
>>$LTPROOT/output/cpuctl_results.txt 2>/dev/null &
+ if [ $? -ne 0 ]
+ then
+ echo "Error: Could not run ./cpuctl_task_$i"
+ cleanup;
+ exit -1;
+ else
+ PID[$i]=$!;
+ fi
+ i=`expr $i + 1`
+ done
+ else
+ echo "Source file not compiled..Plz check Makefile...Exiting
test"
+ cleanup;
+ exit -1;
+ fi
+ sleep 3
+ echo TASKS FIRED
+ echo helloworld > myfifo;
+
+ #wait for the tasks to finish for cleanup and status report to pan
+ for i in $(seq 1 $NUM_GROUPS)
+ do
+ wait ${PID[$i]};
+ RC=$?; # Return status of the task being waited
+ # In abnormal termination of anyone trap will kill all others
+ # and they will return non zero exit status. So Test broke!!
+ if [ $RC -ne 0 ]
+ then
+ echo "Task $i exited abnormalywith return value: $RC";
+ tst_resm TINFO "Test could not execute for the expected
duration";
+ cleanup;
+ exit -1;
+ fi
+ done
+ echo "Cpu controller test executed successfully.Results written to
file";
+ echo "Please review the results in $LTPROOT/output/cpuctl_results.txt"
+ cleanup;
+ cd $PWD
+ exit 0; #to let PAN reprt success of test
Index: ltp-full-20071130/testcases/kernel/controllers/testplan.txt
===================================================================
--- /dev/null
+++ ltp-full-20071130/testcases/kernel/controllers/testplan.txt
@@ -0,0 +1,10 @@
+THE RESOURCE MANAGEMENT (CONTROLLERS) TEST PLAN
+
+This directory "controllers" is created to include all test cases related to
the resource
+controllers in linux. The testplan at present includes testing of cpu
controller and memory
+controller. This is the first testcase in LTP to test the resource controllers
(and tests
+cpu controller only). Future testcases willl be included to test the cpu
controller further
+and memory controller. Each controller will have it's own directory to contain
all test cases.
+
+
+For more information on resource controllers please refer to cgroups.txt in
kernel documentation.
Index: ltp-full-20071130/testcases/kernel/controllers/test_controllers.sh
===================================================================
--- /dev/null
+++ ltp-full-20071130/testcases/kernel/controllers/test_controllers.sh
@@ -0,0 +1,54 @@
+#!/bin/bash
+#usage ./test_controllers.sh
+##################################################################################
+# Copyright (c) International Business Machines Corp., 2007
#
+#
#
+# 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
+#
#
+##################################################################################
+# Name Of File: test_controllers.sh
#
+#
#
+# Description:
#
+# This file runs the tests for resource management ie to test
cpu #
+# controller and memory controller. (for now cpu controller
only) #
+#
#
+# Author: Sudhir Kumar <[EMAIL PROTECTED]> #
+#
#
+# History:
#
+#
#
+# DATE NAME EMAIL DESC
#
+#
#
+# 20/12/07 Sudhir Kumar <[EMAIL PROTECTED]> Created this test #
+#
#
+##################################################################################
+
+if [ -f /proc/cgroups ]
+then
+ CPU_CONTROLLER=`grep -w cpu /proc/cgroups | cut -f1`;
+ if [ "$CPU_CONTROLLER" = "cpu" ]
+ then
+ $LTPROOT/testcases/bin/run_cpuctl_test.sh;
+ else
+ echo "CONTROLLERS TESTCASES: WARNING";
+ echo "Kernel does not support for cpu controller";
+ echo "Skipping all controllers testcases....";
+ fi
+else
+ echo "CONTROLLERS TESTCASES: WARNING"
+ echo "Kernel does not support for control groups";
+ echo "Skipping all controllers testcases....";
+fi
+
+exit 0;
Thanks,
Sudhir Kumar
LTC, ISTL
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Ltp-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list