84 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
			
		
		
	
	
			84 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
| 
 | |
| TEST SUITE:
 | |
| 
 | |
| The directory cpuctl contains the tests related to the cpu controller.
 | |
| There are total 10 testcases that have been added till date.
 | |
| More testcases are expected to be added in future.
 | |
| 
 | |
| TESTS AIM:
 | |
| 
 | |
| The aim of the tests is to test cpu controller functionality.
 | |
| 
 | |
| FILES DESCRIPTION:
 | |
| 
 | |
| cpuctl_testN.c
 | |
| ---------------
 | |
| These are the tasks to run for cpu controller testing.
 | |
| The tasks have been automated in the sense that they can assign themselves to
 | |
| the appropriate group, can modify their group shares, can migrate etc.
 | |
| Each task runs for an interval TIME_INTERVAL seconds and reports the total time
 | |
| it could run on all cpus in an interval of INTERVAL seconds. (for convinience
 | |
| calculate cpu time is given in % and seconds both).
 | |
| A task can call a library routine from libcontrollers library to calculate
 | |
| total amount of shares of all the groups, total number of tasks in it's group etc.
 | |
| And thus a task knows what is the expected cpu time it should get to run.
 | |
| 
 | |
| After say n SETS it modifies it's parameters and again report the cpu
 | |
| usage.
 | |
| Maximum effort has been used to reuse the code and keep total code size low.
 | |
| 
 | |
| parameters.sh
 | |
| ----------
 | |
| This file contains the functions which do 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. The cleanup function does a complete cleanup
 | |
| of the system.
 | |
| (*However most of the error scenarios have been tested for a sane cleanup, still if
 | |
| sometime it is unable to do it justt manualy execute the commands written in cleanup
 | |
| function)
 | |
| 
 | |
| run_cpuctl_test.sh
 | |
| ------------------
 | |
| This script creates different scenarios for cpu controller testing and fires (n) tasks
 | |
| in different groups to run at the same time. It waits for the return status from
 | |
| tasks and reports test pass/fail accordingly.
 | |
| 
 | |
| Makefile
 | |
| --------
 | |
| 
 | |
| The usual makefile for this directory
 | |
| 
 | |
| $LTPROOT/output/cpuctl_resultsN.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.
 | |
| 
 | |
| There are two common major expected outcomes of all the tests:
 | |
| 
 | |
| 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.
 | |
| 
 | |
| The results file are straight forward to read. To keep things very simple just look at
 | |
| the two fields calc:- and exp:- in % as below:
 | |
| 
 | |
| CPU TIME{calc:- 60.01(s)i.e.  50.01(%) exp:- 50.00(%)}
 | |
| 
 | |
| PASS/FAIL CRITERIO:
 | |
| ==================
 | |
| A major difference in the two % values is a failure of cpu controller.
 | |
| Also the difference between consecutive runs under similar conditions is fail.
 | |
| Because of some feature which is not currently developed in kernel it is not
 | |
| possible to create an ideal scenario and hence the decision of PASS/FAIL is
 | |
| not taken for all the tests at the moment. The statistics is generated in the
 | |
| results file and a quick look on it gives a proper understanding.
 | |
| 
 | |
| NOTE: In current scenario a variation of 1-3 % is acceptable.
 | |
| 
 | |
| README:
 | |
| --------
 | |
| The one you have gone through.
 | |
| 
 |