On Thu, Feb 28, 2008 at 04:40:45PM +0530, Dhaval Giani wrote:
> 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
Most welcome..
> 
> > 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.
I will correct it. better may be..
 (Exp) task A's cpu time(%) = (task A's run time * 100) / (INTERVAL *
num_cpus)
> 
> >     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 :)
will correct.
> > 
> >                     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)

ok
> 
> >                             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?
nothing here as such.. just better way
> 
> >     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
Done in a later patch
> 
> > 
> >     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
> 
Thanks again!!

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