cpupower: implement the multi-cpu monitoring of programs
PATCH 1/2 cpupower: implement the multi-cpu monitoring of programs
If we look inside cpupower/ToDo, the current 6th point makes mention of a method to implement multi-cpu monitoring without introducing noise to the tested program itself.
--- .../utils/idle_monitor/cpupower-monitor.c | 28 +++++++++++++------ 1 file changed, 20 insertions(+), 8 deletions(-)
tools/power/cpupower/utils/idle_monitor/cpupower-monitor.c +20 -8
@@ -278,7 +278,7 @@ void list_monitors(void) } } -int fork_it (char **argv) +int fork_it (int cpu,char **argv) {int status;unsigned int num;
@@ -315,9 +315,9 @@ int fork_it(char **argv) timediff =timespec_diff_us (start, end);if (WIFEXITED (status)) -printf (_ ("%s took %.5f seconds and exited with status %d\n" ), - argv[0 ], timediff / (1000.0 *1000 ), -WEXITSTATUS (status)); +printf (_ ("cpu %d: %s took %.5f seconds and exited with status %d\n" ), + cpu, argv[0 ], + timediff / (1000.0 *1000 ),WEXITSTATUS (status));return 0 ; }
@@ -388,7 +388,8 @@ int cmd_monitor(int argc, char **argv) {unsigned int num;struct cpuidle_monitor *test_mon; -int cpu; +int cpu, status; +pid_t child_pid;cmdline (argc, argv); cpu_count =get_cpu_topology (&cpu_top);
@@ -440,10 +441,21 @@ int cmd_monitor(int argc, char **argv)/* * if any params left, it must be a command to fork */ -if (argc - optind) -fork_it (argv + optind); -else +if (argc - optind) { +for (cpu =0 ; cpu < cpu_count; cpu++) { + child_pid =fork (); +if (!child_pid) { +bind_cpu (cpu); +fork_it (cpu, argv + optind); +exit (EXIT_SUCCESS ); + }else if (waitpid (child_pid, &status,0 ) ==-1 ) { +perror ("waitpid" ); +exit (EXIT_FAILURE ); + } + } + }else {do_interval_measure (interval); + }/* ToDo: Topology parsing needs fixing first to do this more generically */
Signature · 1 line
2.31.1
PATCH 2/2 cpupower: removed a completed task from the list
Since this task has been completed, cpupower/ToDo should be updated so that others know not to attempt this task as well.
--- tools/power/cpupower/ToDo | 10 ---------- 1 file changed, 10 deletions(-)
tools/power/cpupower/ToDo +0 -10
@@ -12,13 +12,3 @@ ToDos sorted by priority: -> This is to move the per_cpu logic from inside the monitor to outside it. This can be given higher priority in fork_it. -- Fork as many processes as there are CPUs in case the - per_cpu_schedule flag is set. - -> Bind forked process to each cpu. - -> Execute start measures via the forked processes on - each cpu. - -> Run test executable in a forked process. - -> Execute stop measures via the forked processes on - each cpu. - This would be ideal as it will not introduce noise in the - tested executable.
Signature · 1 line
2.31.1
Shuah Khan
maintainerRe: [PATCH 2/2] cpupower: removed a completed task from the list
Quoted 4 lines · Hamza Mahfooz
Since this task has been completed, cpupower/ToDo should be updated so that others know not to attempt this task as well.
Signed-off-by Hamza Mahfooz <[email protected]>
You have to use real name/address in you signed-off-by. Is this how you sign your legal documents?
Please refer to:
https://www.kernel.org/doc/html/latest/process/submitting-patches.html
thanks,
-- Shuah
Re: [PATCH 2/2] cpupower: removed a completed task from the list
Quoted 1 line · Shuah Khan
You have to use real name/address in you signed-off-by.
I have used my real name and email address btw.
Shuah Khan
maintainerQuoted 6 lines · Hamza Mahfooz
If we look inside cpupower/ToDo, the current 6th point makes mention of a method to implement multi-cpu monitoring without introducing noise to the tested program itself.
Suggested-by Janakarajan Natarajan <[email protected]>Signed-off-by Hamza Mahfooz <[email protected]>
You have to use real name/address in you signed-off-by. Is this how you sign your legal documents?
Please refer to:
https://www.kernel.org/doc/html/latest/process/submitting-patches.html
thanks,
-- Shuah