Received: by 10.192.165.156 with SMTP id m28csp547705imm; Wed, 11 Apr 2018 03:34:51 -0700 (PDT) X-Google-Smtp-Source: AIpwx49GjFTNysxpEesMpf4M2mfNi6XU/2LoDZMddTaW2yh2pYjzejtf/xSSc49doEaK0litvr7x X-Received: by 10.101.81.11 with SMTP id f11mr3048797pgq.150.1523442891722; Wed, 11 Apr 2018 03:34:51 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1523442891; cv=none; d=google.com; s=arc-20160816; b=dcwogkWtoCOGabrMdb/be1eKjCVcw9gLM/AxclVgEuo6dpgpqr+2mq1RrQYqEOGAfP 2yl+Q0Ha7EVY3EMclwP+CdSmPE5EXGj0yl9sH6N2vn7ghpWdF3HRmmo78fh13DNIYit8 a/AgcmbJYutvOlIFAmoCGSDB/N7axEQxc/5ubfPhMs3/lyxhqrC4dvCvr086ilzDpukv M3dJQrL7FCePriRWTNRHXPPZII2w+5DGudSPpOJD+UZgbM3IZGLAlF6A5QfQxhfS22zv CKTvWv7E4XyR67O5yjPb6tZTuSzh5GGpq4WgUQuT39hEQRqSAkPivueqPDuQj51za57s ElxA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:date:subject:cc:to:from :arc-authentication-results; bh=I1t0FKyBvzCqJc8253O6h0g0Rh6lEpfIB4lk45qNBVw=; b=Vpj8OC1+mYSRXPjKQFPmkf3fMURBfuvEo1FtJNErveQTRxBh399y5+bbGRnV7M4jP6 oJthZqj0tYgo0dx8QNShZqWn7CTj9DHpI/3jjstlTN9xGzG1yzb9nsKsqbaBiXxccGGR h3Ghjd66uanp1E3nAyxRXCgox0eI6VutmSkCbzpUTweTUE8HDwxdmyw+taiGZVjuCKkz z0Ja7XYPW3Ocxhc4NS81QvzSyIO6WNr8JZsksrxcLNhYLtOWvT4IjGjtSW3xwVEkRrGw JBXtA80PDU0pf1/4FNGiIxsamh/Jy+FjGPutpIM+O0IxxBiEgx62Cz/M8xJMjwhhTlSr 5QRg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id e22-v6si862078plj.155.2018.04.11.03.34.15; Wed, 11 Apr 2018 03:34:51 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752664AbeDKK2H (ORCPT + 99 others); Wed, 11 Apr 2018 06:28:07 -0400 Received: from mga11.intel.com ([192.55.52.93]:50895 "EHLO mga11.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751797AbeDKK2F (ORCPT ); Wed, 11 Apr 2018 06:28:05 -0400 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga001.jf.intel.com ([10.7.209.18]) by fmsmga102.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 11 Apr 2018 03:28:05 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.48,435,1517904000"; d="scan'208";a="46969129" Received: from yu-chen.sh.intel.com ([10.239.160.138]) by orsmga001.jf.intel.com with ESMTP; 11 Apr 2018 03:28:03 -0700 From: Yu Chen To: Len Brown Cc: Chen Yu , Rafael J Wysocki , Artem Bityutskiy , linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH][v3] tools/power turbostat: if --max_loop, print for specific time of loops Date: Wed, 11 Apr 2018 18:30:38 +0800 Message-Id: <20180411103038.12735-1-yu.c.chen@intel.com> X-Mailer: git-send-email 2.13.6 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Chen Yu There's a use case during test to only print specific round of loops if --iterations is specified, for example, with this patch applied: turbostat -i 5 -t 4 will capture 4 samples with 5 seconds interval. Cc: Len Brown Cc: Rafael J Wysocki Cc: Artem Bityutskiy Cc: linux-pm@vger.kernel.org Cc: linux-kernel@vger.kernel.org Signed-off-by: Chen Yu --- tools/power/x86/turbostat/turbostat.c | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/tools/power/x86/turbostat/turbostat.c b/tools/power/x86/turbostat/turbostat.c index bd9c6b31a504..29419b1535bb 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}; +int iterations; 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" + "--iterations loops 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(); @@ -2607,6 +2611,10 @@ void turbostat_loop() compute_average(EVEN_COUNTERS); format_all_counters(EVEN_COUNTERS); flush_output_stdout(); + + if (iterations && (++loops >= iterations)) + break; + nanosleep(&interval_ts, NULL); if (snapshot_proc_sysfs_files()) goto restart; @@ -2626,6 +2634,9 @@ void turbostat_loop() compute_average(ODD_COUNTERS); format_all_counters(ODD_COUNTERS); flush_output_stdout(); + + if (iterations && (++loops >= iterations)) + break; } } @@ -4999,6 +5010,7 @@ void cmdline(int argc, char **argv) {"Dump", no_argument, 0, 'D'}, {"debug", no_argument, 0, 'd'}, /* internal, not documented */ {"interval", required_argument, 0, 'i'}, + {"iterations", required_argument, 0, 't'}, {"help", no_argument, 0, 'h'}, {"hide", required_argument, 0, 'H'}, // meh, -h taken by --help {"Joules", no_argument, 0, 'J'}, @@ -5014,7 +5026,7 @@ void cmdline(int argc, char **argv) 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:vt:", long_options, &option_index)) != -1) { switch (opt) { case 'a': @@ -5069,6 +5081,15 @@ void cmdline(int argc, char **argv) case 'S': summary_only++; break; + case 't': + iterations = strtod(optarg, NULL); + + if (iterations <= 0) { + fprintf(outf, "loops %d should be positive number\n", + iterations); + exit(2); + } + break; case 'T': tcc_activation_temp_override = atoi(optarg); break; -- 2.13.6