public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Jin Yao <yao.jin@linux.intel.com>
To: acme@kernel.org, jolsa@kernel.org, peterz@infradead.org,
	mingo@redhat.com, alexander.shishkin@linux.intel.com
Cc: Linux-kernel@vger.kernel.org, ak@linux.intel.com,
	kan.liang@intel.com, yao.jin@intel.com,
	Jin Yao <yao.jin@linux.intel.com>
Subject: [PATCH] perf stat: Fix uncore event mixed metric with workload error issue
Date: Mon, 27 Apr 2020 22:41:16 +0800	[thread overview]
Message-ID: <20200427144116.27330-1-yao.jin@linux.intel.com> (raw)

The metric mixed with uncore event is failed with workload.

root@lkp-csl-2sp5 ~# perf stat -M DRAM_BW_Use -- sleep 1
Error:
The sys_perf_event_open() syscall returned with 22 (Invalid argument) for event (uncore_imc/cas_count_read/).
/bin/dmesg | grep -i perf may provide additional information.

But it works without workload.

root@lkp-csl-2sp5 ~# perf stat -M DRAM_BW_Use
^C
 Performance counter stats for 'system wide':

              5.38 MiB  uncore_imc/cas_count_read/
              3.98 MiB  uncore_imc/cas_count_write/
        1550285007 ns   duration_time

       1.550285007 seconds time elapsed

The uncore events (e.g. uncore_imc/cas_count_read/ and
uncore_imc/cas_count_write/) have been forced to system wide but duration_time
is not.

Currently, the target system wide is set according to:

1. there's no workload specified
2. there is workload specified but all requested events are system wide events.

For DRAM_BW_Use, the target is not set to system wide since 2 is not
met. Next, the counter creation on CPU will run into some issues.

It should make sense to set the target system wide if there is workload
specified and at least one required event is system wide event.

With this patch,

root@lkp-csl-2sp5 ~# perf stat -M DRAM_BW_Use -- sleep 1

 Performance counter stats for 'system wide':

              4.81 MiB  uncore_imc/cas_count_read/
              2.89 MiB  uncore_imc/cas_count_write/
        1002019036 ns   duration_time

       1.002019036 seconds time elapsed

Fixes: e3ba76deef23 ("perf tools: Force uncore events to system wide monitoring")
Signed-off-by: Jin Yao <yao.jin@linux.intel.com>
---
 tools/perf/builtin-stat.c | 13 ++++++++-----
 1 file changed, 8 insertions(+), 5 deletions(-)

diff --git a/tools/perf/builtin-stat.c b/tools/perf/builtin-stat.c
index 9207b6c45475..b01ee06b1965 100644
--- a/tools/perf/builtin-stat.c
+++ b/tools/perf/builtin-stat.c
@@ -1841,8 +1841,8 @@ static void setup_system_wide(int forks)
 	 * conditions is met:
 	 *
 	 *   - there's no workload specified
-	 *   - there is workload specified but all requested
-	 *     events are system wide events
+	 *   - there is workload specified but at least one requested
+	 *     event is system wide event
 	 */
 	if (!target__none(&target))
 		return;
@@ -1851,13 +1851,16 @@ static void setup_system_wide(int forks)
 		target.system_wide = true;
 	else {
 		struct evsel *counter;
+		bool system_wide = false;
 
 		evlist__for_each_entry(evsel_list, counter) {
-			if (!counter->core.system_wide)
-				return;
+			if (counter->core.system_wide) {
+				system_wide = true;
+				break;
+			}
 		}
 
-		if (evsel_list->core.nr_entries)
+		if (evsel_list->core.nr_entries && system_wide)
 			target.system_wide = true;
 	}
 }
-- 
2.17.1


             reply	other threads:[~2020-04-27 14:43 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-04-27 14:41 Jin Yao [this message]
2020-04-28 10:51 ` [PATCH] perf stat: Fix uncore event mixed metric with workload error issue Jiri Olsa
2020-04-28 21:19   ` Andi Kleen
2020-04-29  8:16     ` Jiri Olsa
2020-04-29 11:50       ` Jin, Yao

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200427144116.27330-1-yao.jin@linux.intel.com \
    --to=yao.jin@linux.intel.com \
    --cc=Linux-kernel@vger.kernel.org \
    --cc=acme@kernel.org \
    --cc=ak@linux.intel.com \
    --cc=alexander.shishkin@linux.intel.com \
    --cc=jolsa@kernel.org \
    --cc=kan.liang@intel.com \
    --cc=mingo@redhat.com \
    --cc=peterz@infradead.org \
    --cc=yao.jin@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox