From: Arnaldo Carvalho de Melo <acme@kernel.org>
To: Ian Rogers <irogers@google.com>
Cc: Peter Zijlstra <peterz@infradead.org>,
Ingo Molnar <mingo@redhat.com>,
Namhyung Kim <namhyung@kernel.org>,
Mark Rutland <mark.rutland@arm.com>,
Alexander Shishkin <alexander.shishkin@linux.intel.com>,
Jiri Olsa <jolsa@kernel.org>,
Adrian Hunter <adrian.hunter@intel.com>,
Kan Liang <kan.liang@linux.intel.com>, Hao Ge <gehao@kylinos.cn>,
James Clark <james.clark@linaro.org>,
Howard Chu <howardchu95@gmail.com>,
Dominique Martinet <asmadeus@codewreck.org>,
Levi Yun <yeoreum.yun@arm.com>, Xu Yang <xu.yang_2@nxp.com>,
Tengda Wu <wutengda@huaweicloud.com>,
Yang Jihong <yangjihong1@huawei.com>,
linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v1 01/10] perf bench evlist-open-close: Reduce scope of 2 variables
Date: Wed, 12 Feb 2025 15:17:36 +0100 [thread overview]
Message-ID: <Z6ytgCGkdl07DewQ@x1> (raw)
In-Reply-To: <20250111190143.1029906-2-irogers@google.com>
On Sat, Jan 11, 2025 at 11:01:34AM -0800, Ian Rogers wrote:
> Make 2 global variables local. Reduces ELF binary size by removing
> relocations. For a no flags build, the perf binary size is reduced by
> 4,144 bytes on x86-64.
I'm trying to reproduce your results:
$ gcc --version | head -1
gcc (GCC) 14.2.1 20240912 (Red Hat 14.2.1-3)
$
$ rm -rf /tmp/build/$(basename $PWD)/ ; mkdir -p /tmp/build/$(basename $PWD)/
$ make -k O=/tmp/build/$(basename $PWD)/ -C tools/perf install-bin
Without your patch:
$ ls -la ~/bin/perf
-rwxr-xr-x. 2 acme acme 11411680 Feb 12 10:57 /home/acme/bin/perf
$ size ~/bin/perf
text data bss dec hex filename
10071297 302496 34540 10408333 9ed18d /home/acme/bin/perf
$
Then, with your patch:
$ git log --oneline -1
abd904389b3f0807 (HEAD -> perf-tools-next) perf bench evlist-open-close: Reduce scope of 2 variables
$ perf -v
perf version 6.13.rc2.gabd904389b3f
$ size ~/bin/perf
text data bss dec hex filename
10072001 301568 34540 10408109 9ed0ad /home/acme/bin/perf
$
$ ls -la ~/bin/perf
-rwxr-xr-x. 2 acme acme 11411632 Feb 12 11:02 /home/acme/bin/perf
$
So a more modest 224 bytes reduction in the perf binary size.
In the distant past several of these moves from global to local were
made, for instance:
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=d20deb64e0490ee9442b5181bc08a62d2cadcb90
I tried but didn't find the before/after effects on binary size...
Anyways,
Reviewed-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Thanks,
- Arnaldo
> Signed-off-by: Ian Rogers <irogers@google.com>
> ---
> tools/perf/bench/evlist-open-close.c | 42 +++++++++++++++-------------
> 1 file changed, 23 insertions(+), 19 deletions(-)
>
> diff --git a/tools/perf/bench/evlist-open-close.c b/tools/perf/bench/evlist-open-close.c
> index 5a27691469ed..79cedcf94a39 100644
> --- a/tools/perf/bench/evlist-open-close.c
> +++ b/tools/perf/bench/evlist-open-close.c
> @@ -46,25 +46,6 @@ static struct record_opts opts = {
> .ctl_fd_ack = -1,
> };
>
> -static const struct option options[] = {
> - OPT_STRING('e', "event", &event_string, "event", "event selector. use 'perf list' to list available events"),
> - OPT_INTEGER('n', "nr-events", &nr_events,
> - "number of dummy events to create (default 1). If used with -e, it clones those events n times (1 = no change)"),
> - OPT_INTEGER('i', "iterations", &iterations, "Number of iterations used to compute average (default=100)"),
> - OPT_BOOLEAN('a', "all-cpus", &opts.target.system_wide, "system-wide collection from all CPUs"),
> - OPT_STRING('C', "cpu", &opts.target.cpu_list, "cpu", "list of cpus where to open events"),
> - OPT_STRING('p', "pid", &opts.target.pid, "pid", "record events on existing process id"),
> - OPT_STRING('t', "tid", &opts.target.tid, "tid", "record events on existing thread id"),
> - OPT_STRING('u', "uid", &opts.target.uid_str, "user", "user to profile"),
> - OPT_BOOLEAN(0, "per-thread", &opts.target.per_thread, "use per-thread mmaps"),
> - OPT_END()
> -};
> -
> -static const char *const bench_usage[] = {
> - "perf bench internals evlist-open-close <options>",
> - NULL
> -};
> -
> static int evlist__count_evsel_fds(struct evlist *evlist)
> {
> struct evsel *evsel;
> @@ -225,6 +206,29 @@ static char *bench__repeat_event_string(const char *evstr, int n)
>
> int bench_evlist_open_close(int argc, const char **argv)
> {
> + const struct option options[] = {
> + OPT_STRING('e', "event", &event_string, "event",
> + "event selector. use 'perf list' to list available events"),
> + OPT_INTEGER('n', "nr-events", &nr_events,
> + "number of dummy events to create (default 1). If used with -e, it clones those events n times (1 = no change)"),
> + OPT_INTEGER('i', "iterations", &iterations,
> + "Number of iterations used to compute average (default=100)"),
> + OPT_BOOLEAN('a', "all-cpus", &opts.target.system_wide,
> + "system-wide collection from all CPUs"),
> + OPT_STRING('C', "cpu", &opts.target.cpu_list, "cpu",
> + "list of cpus where to open events"),
> + OPT_STRING('p', "pid", &opts.target.pid, "pid",
> + "record events on existing process id"),
> + OPT_STRING('t', "tid", &opts.target.tid, "tid",
> + "record events on existing thread id"),
> + OPT_STRING('u', "uid", &opts.target.uid_str, "user", "user to profile"),
> + OPT_BOOLEAN(0, "per-thread", &opts.target.per_thread, "use per-thread mmaps"),
> + OPT_END()
> + };
> + const char *const bench_usage[] = {
> + "perf bench internals evlist-open-close <options>",
> + NULL
> + };
> char *evstr, errbuf[BUFSIZ];
> int err;
>
> --
> 2.47.1.613.gc27f4b7a9f-goog
>
next prev parent reply other threads:[~2025-02-12 14:17 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-01-11 19:01 [PATCH v1 00/10] Move uid filtering to BPF filters Ian Rogers
2025-01-11 19:01 ` [PATCH v1 01/10] perf bench evlist-open-close: Reduce scope of 2 variables Ian Rogers
2025-02-12 14:17 ` Arnaldo Carvalho de Melo [this message]
2025-01-11 19:01 ` [PATCH v1 02/10] perf parse-events filter: Use evsel__find_pmu Ian Rogers
2025-02-12 14:51 ` Arnaldo Carvalho de Melo
2025-02-12 16:11 ` Ian Rogers
2025-01-11 19:01 ` [PATCH v1 03/10] perf target: Separate parse_uid into its own function Ian Rogers
2025-01-11 19:01 ` [PATCH v1 04/10] perf parse-events: Add parse_uid_filter helper Ian Rogers
2025-01-11 19:01 ` [PATCH v1 05/10] perf record: Switch user option to use BPF filter Ian Rogers
2025-01-11 19:01 ` [PATCH v1 06/10] perf top: " Ian Rogers
2025-01-11 19:01 ` [PATCH v1 07/10] perf trace: " Ian Rogers
2025-01-11 19:01 ` [PATCH v1 08/10] perf bench evlist-open-close: " Ian Rogers
2025-01-11 19:01 ` [PATCH v1 09/10] perf target: Remove uid from target Ian Rogers
2025-01-11 19:01 ` [PATCH v1 10/10] perf thread_map: Remove uid options Ian Rogers
2025-02-10 18:18 ` [PATCH v1 00/10] Move uid filtering to BPF filters Ian Rogers
2025-02-10 19:59 ` Namhyung Kim
2025-02-10 22:06 ` Ian Rogers
2025-02-11 3:12 ` Namhyung Kim
2025-02-11 4:40 ` Ian Rogers
2025-02-11 17:51 ` Namhyung Kim
2025-02-11 18:06 ` Ian Rogers
2025-02-12 1:51 ` Namhyung Kim
2025-02-12 5:41 ` Ian Rogers
2025-02-12 18:46 ` Namhyung Kim
2025-02-12 20:00 ` Ian Rogers
2025-02-12 22:56 ` Namhyung Kim
2025-02-12 23:17 ` Ian Rogers
2025-02-13 1:44 ` Namhyung Kim
2025-02-13 7:27 ` Ian Rogers
2025-02-13 17:47 ` Namhyung Kim
2025-02-13 18:13 ` Ian Rogers
2025-02-13 18:59 ` Namhyung Kim
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=Z6ytgCGkdl07DewQ@x1 \
--to=acme@kernel.org \
--cc=adrian.hunter@intel.com \
--cc=alexander.shishkin@linux.intel.com \
--cc=asmadeus@codewreck.org \
--cc=gehao@kylinos.cn \
--cc=howardchu95@gmail.com \
--cc=irogers@google.com \
--cc=james.clark@linaro.org \
--cc=jolsa@kernel.org \
--cc=kan.liang@linux.intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-perf-users@vger.kernel.org \
--cc=mark.rutland@arm.com \
--cc=mingo@redhat.com \
--cc=namhyung@kernel.org \
--cc=peterz@infradead.org \
--cc=wutengda@huaweicloud.com \
--cc=xu.yang_2@nxp.com \
--cc=yangjihong1@huawei.com \
--cc=yeoreum.yun@arm.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.