[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <5473d8d537e30b3fd5333038dc5fdd25ba027d06.1629490974.git.rickyman7@gmail.com>
Date: Sat, 21 Aug 2021 11:19:19 +0200
From: Riccardo Mancini <rickyman7@...il.com>
To: Arnaldo Carvalho de Melo <acme@...nel.org>
Cc: Ian Rogers <irogers@...gle.com>,
Namhyung Kim <namhyung@...nel.org>,
Peter Zijlstra <peterz@...radead.org>,
Ingo Molnar <mingo@...hat.com>,
Mark Rutland <mark.rutland@....com>,
Jiri Olsa <jolsa@...hat.com>, linux-kernel@...r.kernel.org,
linux-perf-users@...r.kernel.org,
Riccardo Mancini <rickyman7@...il.com>
Subject: [RFC PATCH v1 13/37] perf evlist: add multithreading to evlist__close
In this patch, evlist__for_each_evsel_cpu is used in evlist__close to
allow it to run in parallel.
Signed-off-by: Riccardo Mancini <rickyman7@...il.com>
---
tools/perf/util/evlist.c | 23 +++++++++--------------
1 file changed, 9 insertions(+), 14 deletions(-)
diff --git a/tools/perf/util/evlist.c b/tools/perf/util/evlist.c
index fbe2d6ed8ecc8f21..f0a839107e8849bf 100644
--- a/tools/perf/util/evlist.c
+++ b/tools/perf/util/evlist.c
@@ -1340,11 +1340,17 @@ void evlist__set_selected(struct evlist *evlist, struct evsel *evsel)
evlist->selected = evsel;
}
+static int __evlist__close_evsel_cpu_func(struct evlist *evlist __maybe_unused,
+ struct evsel *evsel, int cpu,
+ void *args __maybe_unused)
+{
+ perf_evsel__close_cpu(&evsel->core, cpu);
+ return 0;
+}
+
void evlist__close(struct evlist *evlist)
{
struct evsel *evsel;
- struct affinity affinity;
- int cpu, i, cpu_idx;
/*
* With perf record core.cpus is usually NULL.
@@ -1356,19 +1362,8 @@ void evlist__close(struct evlist *evlist)
return;
}
- if (affinity__setup(&affinity) < 0)
- return;
- evlist__for_each_cpu(evlist, i, cpu) {
- affinity__set(&affinity, cpu);
+ evlist__for_each_evsel_cpu(evlist, __evlist__close_evsel_cpu_func, NULL);
- evlist__for_each_entry_reverse(evlist, evsel) {
- cpu_idx = evsel__find_cpu(evsel, cpu);
- if (cpu_idx < 0)
- continue;
- perf_evsel__close_cpu(&evsel->core, cpu_idx);
- }
- }
- affinity__cleanup(&affinity);
evlist__for_each_entry_reverse(evlist, evsel) {
perf_evsel__free_fd(&evsel->core);
perf_evsel__free_id(&evsel->core);
--
2.31.1
Powered by blists - more mailing lists