On Thu, Feb 28, 2008 at 10:09:31AM +0530, Sudhir Kumar wrote:
> Hi,
> This patch adds the third testcase for cpu controller.
> 

Minor comments

> Signed-off-by: Sudhir Kumar <[EMAIL PROTECTED]>
> 
> Index: 
> ltp-full-20071130-tested/testcases/kernel/controllers/cpuctl/cpuctl_test01.c
> ===================================================================
> --- 
> ltp-full-20071130-tested.orig/testcases/kernel/controllers/cpuctl/cpuctl_test01.c
> +++ 
> ltp-full-20071130-tested/testcases/kernel/controllers/cpuctl/cpuctl_test01.c
> @@ -27,7 +27,7 @@
>  /*              testcase tests the ability of the cpu controller to provide  
>  */
>  /*              fairness for share values (absolute).                        
>  */
>  /*                                                                           
>  */
> -/* Total Tests: 2                                                            
>  */
> +/* Total Tests: 3                                                            
>  */
>  /*                                                                           
>  */
>  /* Test Name:   cpu_controller_test01                                        
>  */
>  /*                                                                           
>  */
> @@ -61,7 +61,7 @@
>  #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*/
> -
> +#define GRANULARITY    5       /* % value by which shares of a group changes 
> */
>  extern int Tst_count;
>  char *TCID = "cpu_controller_test01";
>  int TST_TOTAL = 1;
> @@ -80,7 +80,7 @@ int timer_expired = 0;
>  int main(int argc, char* argv[])
>  {
> 
> -     int num_cpus;                   /* To calculate cpu time in %*/
> +     int num_cpus, test_num;                 /* To calculate cpu time in %*/

Comment is not clear.

>       char mygroup[32], mytaskfile[32], mysharesfile[32], ch;
>       pid_t pid;
>       int my_group_num,               /* A number attached with a group*/
> @@ -92,7 +92,7 @@ int main(int argc, char* argv[])
>               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*/
> +     unsigned long int myshares = 1, baseshares = 1000;      /* Simply the 
> base value to start with*/
>       struct sigaction newaction, oldaction;
>       /* Signal handling for alarm*/
>       sigemptyset (&newaction.sa_mask);
> @@ -101,12 +101,20 @@ int main(int argc, char* argv[])
>       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))
> +     if ((argc < 5) || ((my_group_num = atoi(argv[1])) <= 0) || ((scriptpid 
> = atoi(argv[3])) <= 0) || ((num_cpus = atoi(argv[4])) <= 0) || (test_num = 
> atoi(argv[5])) <= 0)
>       {
>               tst_brkm (TBROK, cleanup, "Invalid input parameters\n");
>       }
> 
> -     myshares *= my_group_num;
> +     if (test_num == 1)
> +             myshares *= my_group_num;
> +     else if (test_num == 2)
> +             myshares = baseshares;
> +     else
> +     {
> +             tst_brkm (TBROK, cleanup, "Wrong Test number passed. Exiting 
> Test...\n");
> +     }
> +
>       sprintf(mygroup,"%s", argv[2]);
>       sprintf(mytaskfile, "%s", mygroup);
>       sprintf(mysharesfile, "%s", mygroup);
> @@ -137,7 +145,7 @@ int main(int argc, char* argv[])
>                                        * 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*/
> +                     delta_time = current_time - prev_time;  /* Duration in 
> case its not exact TIME_INTERVAL*/

previous comment was right :)
> 
>                       getrusage (0, &cpu_usage);
>                       total_cpu_time = (cpu_usage.ru_utime.tv_sec + 
> cpu_usage.ru_utime.tv_usec * 1e-6 + /* user time*/
> @@ -160,7 +168,21 @@ int main(int argc, char* argv[])
>                               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*/
> +
> +                                /* Change share values depending on the 
> test_num */
> +                                if (test_num ==1)
> +                                {
> +                                        /* Keep same ratio but change 
> values*/
> +                                        myshares = MULTIPLIER * myshares;
> +                                }
> +                                else
> +                                {
> +                                        /* Increase for odd task and 
> decrease for even task*/
> +                                        if (my_group_num % 2)
> +                                                myshares += baseshares * 
> GRANULARITY / 100;
> +                                        else
> +                                                myshares -= baseshares * 
> GRANULARITY / 100;
> +                                }

switch()..case would be better (considering more tests will be added)

>                               write_to_file (mysharesfile, "w", myshares);
>                               fprintf(stdout,"\ntask-%d 
> SHARES=%lu\n",my_group_num, myshares);
>                       }/* end if*/
> Index: 
> ltp-full-20071130-tested/testcases/kernel/controllers/cpuctl/run_cpuctl_test.sh
> ===================================================================
> --- 
> ltp-full-20071130-tested.orig/testcases/kernel/controllers/cpuctl/run_cpuctl_test.sh
> +++ 
> ltp-full-20071130-tested/testcases/kernel/controllers/cpuctl/run_cpuctl_test.sh
> @@ -51,13 +51,14 @@ 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
> +TEST_NUM=$1;           # To run the desired test (1 or 2)
> 
>  PWD=`pwd`
>  cd $LTPROOT/testcases/bin/
> +NUM_CPUS=`cat /proc/cpuinfo | grep -w processor | wc -l`
> 
>  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`
> @@ -120,7 +121,7 @@ setup ()
> 
>       # Create different groups
>       i=1;
> -     while [ $i -le $NUM_GROUPS ]
> +     while [ "$i" -le "$NUM_GROUPS" ]

probably a dumb question, but what is the difference between the two?

>       do
>               group=group_$i;
>               mkdir /dev/cpuctl/$group;# 2>/dev/null
> @@ -135,13 +136,25 @@ setup ()
>  }
> 
>  ##########################  main   #######################
> -     echo "TEST: CPU CONTROLLER TESTING";
> +     if [ -z $TEST_NUM ]
> +     then
> +             echo "Could not start cpu controller test";
> +             echo "usage: run_cpuctl_test.sh test_num";
> +             echo "Skipping the test...";
> +             exit -1;
> +     fi;
> +     echo "TEST $TEST_NUM: CPU CONTROLLER TESTING";
>       echo "RUNNING SETUP.....";
> -     get_num_groups;
> -     if [ $NUM_GROUPS -lt 2 ]
> +     if [ ${TEST_NUM} -eq 1 ]
>       then
> -             NUM_GROUPS=2;   # min num of groups for testing
> -     fi
> +             get_num_groups;
> +     elif [ ${TEST_NUM} -eq 2 ]
> +     then
> +             NUM_GROUPS=`expr 2 \* $NUM_CPUS`;
> +     else
> +             echo "Invalid test number";
> +             exit -1;
> +     fi;

use case esac

> 
>       setup;
> 
> @@ -153,12 +166,12 @@ setup ()
>       #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;
> +             echo `date` >> $LTPROOT/output/cpuctl_results_$TEST_NUM.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 &
> +                     ./cpuctl_task_$i $i /dev/cpuctl/group_$i $$ $NUM_CPUS 
> $TEST_NUM >>$LTPROOT/output/cpuctl_results_$TEST_NUM.txt 2>/dev/null &
>                       if [ $? -ne 0 ]
>                       then
>                               echo "Error: Could not run ./cpuctl_task_$i"
> @@ -187,14 +200,14 @@ setup ()
>               # and they will return non zero exit status. So Test broke!!
>               if [ $RC -ne 0 ]
>               then
> -                     echo "Task $i exited abnormalywith return value: $RC";
> +                     echo "Task $i exited abnormaly with 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"
> +     echo "Please review the results in 
> $LTPROOT/output/cpuctl_results_$TEST_NUM.txt"
>       cleanup;
>       cd $PWD
>       exit 0;         #to let PAN reprt success of test
> Index: 
> ltp-full-20071130-tested/testcases/kernel/controllers/test_controllers.sh
> ===================================================================
> --- 
> ltp-full-20071130-tested.orig/testcases/kernel/controllers/test_controllers.sh
> +++ ltp-full-20071130-tested/testcases/kernel/controllers/test_controllers.sh
> @@ -39,7 +39,8 @@ then
>       CPU_CONTROLLER=`grep -w cpu /proc/cgroups | cut -f1`;
>       if [ "$CPU_CONTROLLER" = "cpu" ]
>       then
> -             $LTPROOT/testcases/bin/run_cpuctl_test.sh;
> +             $LTPROOT/testcases/bin/run_cpuctl_test.sh 1;
> +             $LTPROOT/testcases/bin/run_cpuctl_test.sh 2;
>       else
>               echo "CONTROLLERS TESTCASES: WARNING";
>               echo "Kernel does not support for cpu controller";
> 
> Thanks,
> Sudhir Kumar
> LTC, ISTL

-- 
regards,
Dhaval

-------------------------------------------------------------------------
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

Reply via email to