lkml.org 
[lkml]   [2018]   [Apr]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    Date
    SubjectRe: [PATCH][RFC] tools/power turbostat: if --max_loop, print for specific time of loops
    On Tue, Apr 10, 2018 at 12:18 PM, Yu Chen <yu.c.chen@intel.com> wrote:
    > From: Chen Yu <yu.c.chen@intel.com>
    >
    > There's a use case during test to only print specific round of loops
    > if --interval is specified, for example, with this patch applied:
    >
    > turbostat -i 5 --max_loops 4
    > will capture 4 samples with 5 seconds interval.

    Why --max_loops and not just --loops or --iterations?

    > Signed-off-by: Chen Yu <yu.c.chen@intel.com>
    > ---
    > tools/power/x86/turbostat/turbostat.c | 19 ++++++++++++++++++-
    > 1 file changed, 18 insertions(+), 1 deletion(-)
    >
    > diff --git a/tools/power/x86/turbostat/turbostat.c b/tools/power/x86/turbostat/turbostat.c
    > index bd9c6b31a504..a35418a59468 100644
    > --- a/tools/power/x86/turbostat/turbostat.c
    > +++ b/tools/power/x86/turbostat/turbostat.c
    > @@ -48,6 +48,7 @@ char *proc_stat = "/proc/stat";
    > FILE *outf;
    > int *fd_percpu;
    > struct timespec interval_ts = {5, 0};
    > +unsigned int max_loops;
    > unsigned int debug;
    > unsigned int quiet;
    > unsigned int sums_need_wide_columns;
    > @@ -470,6 +471,7 @@ void help(void)
    > " {core | package | j,k,l..m,n-p }\n"
    > "--quiet skip decoding system configuration header\n"
    > "--interval sec Override default 5-second measurement interval\n"
    > + "--max_loops times The number of loops if interval is specified\n"
    > "--help print this help message\n"
    > "--list list column headers only\n"
    > "--out file create or truncate \"file\" for all output\n"
    > @@ -2565,6 +2567,7 @@ void turbostat_loop()
    > {
    > int retval;
    > int restarted = 0;
    > + int loops = 0;
    >
    > restart:
    > restarted++;
    > @@ -2583,6 +2586,7 @@ void turbostat_loop()
    > restarted = 0;
    > gettimeofday(&tv_even, (struct timezone *)NULL);
    >
    > + loops = 0;
    > while (1) {
    > if (for_all_proc_cpus(cpu_is_not_present)) {
    > re_initialize();
    > @@ -2626,6 +2630,9 @@ void turbostat_loop()
    > compute_average(ODD_COUNTERS);
    > format_all_counters(ODD_COUNTERS);
    > flush_output_stdout();
    > +
    > + if (++loops >= (max_loops/2))
    > + break;
    > }
    > }
    >
    > @@ -5009,12 +5016,13 @@ void cmdline(int argc, char **argv)
    > {"Summary", no_argument, 0, 'S'},
    > {"TCC", required_argument, 0, 'T'},
    > {"version", no_argument, 0, 'v' },
    > + {"max_loops", required_argument, 0, 'x'},
    > {0, 0, 0, 0 }
    > };
    >
    > progname = argv[0];
    >
    > - while ((opt = getopt_long_only(argc, argv, "+C:c:Ddhi:JM:m:o:qST:v",
    > + while ((opt = getopt_long_only(argc, argv, "+C:c:Ddhi:JM:m:o:qST:vx:",
    > long_options, &option_index)) != -1) {
    > switch (opt) {
    > case 'a':
    > @@ -5076,6 +5084,15 @@ void cmdline(int argc, char **argv)
    > print_version();
    > exit(0);
    > break;
    > + case 'x':
    > + {
    > + unsigned int loops = strtod(optarg, NULL);
    > +
    > + if (loops % 2)
    > + loops++;
    > + max_loops = loops;
    > + }
    > + break;
    > }
    > }
    > }
    > --
    > 2.13.6
    >

    \
     
     \ /
      Last update: 2018-04-10 12:22    [W:5.997 / U:0.004 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site