From: Subrata <sub...@us...> - 2008-02-28 15:42:49
|
Update of /cvsroot/ltp/ltp/testcases/kernel/controllers/cpuctl In directory sc8-pr-cvs6.sourceforge.net:/tmp/cvs-serv14864/ltp/testcases/kernel/controllers/cpuctl Modified Files: cpuctl_test04.c Log Message: Initial Set of CPU CONTROLLERS Test Cases. This patch adds the library routines in cpu controller stress test cases 4 & 5. It also does minor cleanup. Signed-off-by: Sudhir Kumar <sk...@li...> Index: cpuctl_test04.c =================================================================== RCS file: /cvsroot/ltp/ltp/testcases/kernel/controllers/cpuctl/cpuctl_test04.c,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** cpuctl_test04.c 28 Feb 2008 14:44:47 -0000 1.2 --- cpuctl_test04.c 28 Feb 2008 15:42:32 -0000 1.3 *************** *** 56,59 **** --- 56,60 ---- #include <unistd.h> + #include "../libcontrollers/libcontrollers.h" #include "test.h" /* LTP harness APIs*/ *************** *** 65,68 **** --- 66,71 ---- int TST_TOTAL = 2; pid_t scriptpid; + char path[] = "/dev/cpuctl"; + extern void cleanup() *************** *** 72,77 **** } - int write_to_file (char * file, const char* mode, unsigned int value); - void signal_handler_alarm (int signal ); int timer_expired = 0; --- 75,78 ---- *************** *** 79,83 **** { ! int test_num, task_num, num_cpus; /* To calculate cpu time in %*/ char mygroup[64], mytaskfile[64], mysharesfile[64], ch; /* Following variables are to capture parameters from script*/ --- 80,84 ---- { ! int test_num, task_num, len, num_cpus; /* num_cpus to calculate cpu time in %*/ char mygroup[64], mytaskfile[64], mysharesfile[64], ch; /* Following variables are to capture parameters from script*/ *************** *** 89,95 **** --- 90,98 ---- delta_cpu_time, /* Time the task could run on cpu(s) (in an interval)*/ prev_cpu_time=0; + double exp_cpu_time; /* Expected time in % as obtained by shares calculation */ struct rusage cpu_usage; unsigned long int mygroup_shares; time_t current_time, prev_time, delta_time; + unsigned int fmyshares, num_tasks;/* f-> from file. num_tasks is tasks in this group*/ struct sigaction newaction, oldaction; /* Signal handling for alarm*/ *************** *** 146,149 **** --- 149,177 ---- read (fd, &ch, 1); /* To block all tasks here and fire them up at the same time*/ + + /* + * We now calculate the expected % cpu time of this task by getting + * it's group's shares, the total shares of all the groups and the + * number of tasks in this group. + */ + FLAG = 0; + total_shares = 0; + shares_pointer = &total_shares; + len = strlen (path); + if (!strncpy (fullpath, path, len)) + tst_brkm (TBROK, cleanup, "Could not copy directory path %s ", path); + + if (scan_shares_files() != 0) + tst_brkm (TBROK, cleanup, "From function scan_shares_files in %s ", fullpath); + + /* return val: -1 in case of function error, else 2 is min share value */ + if ((fmyshares = read_shares_file(mysharesfile)) < 2) + tst_brkm (TBROK, cleanup, "in reading shares files %s ", mysharesfile); + + if ((read_file (mytaskfile, GET_TASKS, &num_tasks)) < 0) + tst_brkm (TBROK, cleanup, "in reading tasks files %s ", mytaskfile); + + exp_cpu_time = (double)(fmyshares * 100) /(total_shares * num_tasks); + prev_time = time (NULL); /* Note down the time*/ *************** *** 173,178 **** mytime = (delta_cpu_time * 100) / (TIME_INTERVAL * num_cpus); ! fprintf (stdout,"Group-%3d:Shares-%4u: task_num:%3d cpu time--> %6.3f\%(%6.3fs)\tinterval:%lu\n", ! mygroup_num, mygroup_shares, task_num, mytime, delta_cpu_time, delta_time); counter++; --- 201,208 ---- mytime = (delta_cpu_time * 100) / (TIME_INTERVAL * num_cpus); ! fprintf (stdout,"Grp:-%3d task-%3d:CPU TIME{calc:-%6.2f(s)i.e. %6.2f(\%) exp:-%6.2f(\%)}\ ! with %lu shares in %lu (s) INTERVAL\n",mygroup_num, task_num, delta_cpu_time, mytime,\ ! exp_cpu_time, fmyshares, delta_time); ! counter++; *************** *** 196,214 **** } /* 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; - } --- 226,227 ---- |