Thread (84 messages) 84 messages, 6 authors, 2022-01-12

Re: [PATCH v4 26/48] perf evsel: Derive CPUs and threads in alloc_counts

From: Ian Rogers <irogers@google.com>
Date: 2022-01-10 05:50:03
Also in: linux-perf-users, lkml

On Sun, Jan 9, 2022 at 10:30 AM Jiri Olsa [off-list ref] wrote:
On Tue, Jan 04, 2022 at 10:13:29PM -0800, Ian Rogers wrote:

SNIP
quoted
diff --git a/tools/perf/util/counts.h b/tools/perf/util/counts.h
index 7ff36bf6d644..3e275e9c60d1 100644
--- a/tools/perf/util/counts.h
+++ b/tools/perf/util/counts.h
@@ -40,7 +40,7 @@ void perf_counts__delete(struct perf_counts *counts);
 void perf_counts__reset(struct perf_counts *counts);

 void evsel__reset_counts(struct evsel *evsel);
-int evsel__alloc_counts(struct evsel *evsel, int ncpus, int nthreads);
+int evsel__alloc_counts(struct evsel *evsel);
 void evsel__free_counts(struct evsel *evsel);

 #endif /* __PERF_COUNTS_H */
diff --git a/tools/perf/util/evsel.c b/tools/perf/util/evsel.c
index 656c30b988ce..6c9af21776e6 100644
--- a/tools/perf/util/evsel.c
+++ b/tools/perf/util/evsel.c
@@ -1578,7 +1578,7 @@ int __evsel__read_on_cpu(struct evsel *evsel, int cpu, int thread, bool scale)
      if (FD(evsel, cpu, thread) < 0)
              return -EINVAL;

-     if (evsel->counts == NULL && evsel__alloc_counts(evsel, cpu + 1, thread + 1) < 0)
+     if (evsel->counts == NULL && evsel__alloc_counts(evsel) < 0)
ugh, nice.. good that it's used only from test code ;-)

btw I noticed evsel__read_on_cpu_scaled is not used at all
I'd noticed that too, but wanted to stay away from making the patch
set larger.  You end up removing the argument to
__evsel__read_on_cpu, etc. Definitely worth cleaning up, but maybe we
can do it later.

Thanks,
Ian
jirka
quoted
              return -ENOMEM;

      if (readn(FD(evsel, cpu, thread), &count, nv * sizeof(u64)) <= 0)
diff --git a/tools/perf/util/stat.c b/tools/perf/util/stat.c
index c69b221f5e3e..995cb5003133 100644
--- a/tools/perf/util/stat.c
+++ b/tools/perf/util/stat.c
@@ -152,11 +152,13 @@ static void evsel__free_stat_priv(struct evsel *evsel)
      zfree(&evsel->stats);
 }

-static int evsel__alloc_prev_raw_counts(struct evsel *evsel, int ncpus, int nthreads)
+static int evsel__alloc_prev_raw_counts(struct evsel *evsel)
 {
+     int cpu_map_nr = evsel__nr_cpus(evsel);
+     int nthreads = perf_thread_map__nr(evsel->core.threads);
      struct perf_counts *counts;

-     counts = perf_counts__new(ncpus, nthreads);
+     counts = perf_counts__new(cpu_map_nr, nthreads);
      if (counts)
              evsel->prev_raw_counts = counts;
@@ -177,12 +179,9 @@ static void evsel__reset_prev_raw_counts(struct evsel *evsel)

 static int evsel__alloc_stats(struct evsel *evsel, bool alloc_raw)
 {
-     int ncpus = evsel__nr_cpus(evsel);
-     int nthreads = perf_thread_map__nr(evsel->core.threads);
-
      if (evsel__alloc_stat_priv(evsel) < 0 ||
-         evsel__alloc_counts(evsel, ncpus, nthreads) < 0 ||
-         (alloc_raw && evsel__alloc_prev_raw_counts(evsel, ncpus, nthreads) < 0))
+         evsel__alloc_counts(evsel) < 0 ||
+         (alloc_raw && evsel__alloc_prev_raw_counts(evsel) < 0))
              return -ENOMEM;

      return 0;
--
2.34.1.448.ga2b2bfdf31-goog
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help