linux-fsdevel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jiri Olsa <olsajiri@gmail.com>
To: Arnaldo Carvalho de Melo <acme@kernel.org>
Cc: Dave Chinner <david@fromorbit.com>,
	Alexei Starovoitov <ast@kernel.org>,
	Andrii Nakryiko <andrii@kernel.org>, Hao Luo <haoluo@google.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	Alexander Viro <viro@zeniv.linux.org.uk>,
	Peter Zijlstra <peterz@infradead.org>,
	Ingo Molnar <mingo@redhat.com>,
	Matthew Wilcox <willy@infradead.org>,
	bpf@vger.kernel.org, linux-mm@kvack.org,
	linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org,
	linux-perf-users@vger.kernel.org, Martin KaFai Lau <kafai@fb.com>,
	Song Liu <songliubraving@fb.com>, Yonghong Song <yhs@fb.com>,
	John Fastabend <john.fastabend@gmail.com>,
	KP Singh <kpsingh@chromium.org>,
	Stanislav Fomichev <sdf@google.com>,
	Daniel Borkmann <daniel@iogearbox.net>,
	Namhyung Kim <namhyung@gmail.com>
Subject: Re: [RFC v2 bpf-next 0/9] mm/bpf/perf: Store build id in inode object
Date: Thu, 2 Mar 2023 09:41:23 +0100	[thread overview]
Message-ID: <ZABhM913DI+DYSjL@krava> (raw)
In-Reply-To: <Y/9yIJ9kOHcZqIzo@kernel.org>

On Wed, Mar 01, 2023 at 12:41:20PM -0300, Arnaldo Carvalho de Melo wrote:
> Em Wed, Mar 01, 2023 at 09:07:14AM +1100, Dave Chinner escreveu:
> > On Tue, Feb 28, 2023 at 10:31:57AM +0100, Jiri Olsa wrote:
> > > this is RFC patchset for adding build id under inode's object.
> 
> > > The main change to previous post [1] is to use inode object instead of file
> > > object for build id data.
> > 
> > Please explain what a "build id" is, the use case for it, why we
> > need to store it in VFS objects, what threat model it is protecting
> > the system against, etc.
> 
> [root@quaco ~]# file /bin/bash
> /bin/bash: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=160df51238a38ca27d03290f3ad5f7df75560ae0, for GNU/Linux 3.2.0, stripped
> [root@quaco ~]# file /lib64/libc.so.6
> /lib64/libc.so.6: ELF 64-bit LSB shared object, x86-64, version 1 (GNU/Linux), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=8257ee907646e9b057197533d1e4ac8ede7a9c5c, for GNU/Linux 3.2.0, not stripped
> [root@quaco ~]#
> 
> Those BuildID[sha1]= bits, that is present in all binaries I think in
> all distros for quite a while.
> 
> This page, from when this was initially designed, has a discussion about
> it, why it is needed, etc:
> 
>   https://fedoraproject.org/wiki/RolandMcGrath/BuildID
> 
> 'perf record' will receive MMAP records, initially without build-ids,
> now we have one that has, but collecting it when the mmap is executed
> (and thus a PERF_RECORD_MMAP* record is emitted) may not work, thus this
> work from Jiri.

thanks for the pointers

build id is unique id for binary that's been used to identify
correct binary version for related stuff.. like binary's debuginfo
in perf or match binary with stack trace entries in bpf stackmap

jirka

> 
> - Arnaldo
>  
> > > 
> > > However.. ;-) while using inode as build id storage place saves some memory
> > > by keeping just one copy of the build id for all file instances, there seems
> > > to be another problem.
>  
> > Yes, the problem being that we can cache hundreds of millions of
> > inodes in memory, and only a very small subset of them are going to
> > have open files associated with them. And an even smaller subset are
> > going to be mmapped.
>  
> > So, in reality, this proposal won't save any memory at all - it
> > costs memory for every inode that is not currently being used as
> > a mmapped elf executable, right?
> > 
> > > The problem is that we read the build id when the file is mmap-ed.
> > 
> > Why? I'm completely clueless as to what this thing does or how it's
> > used....
> > 
> > > Which is fine for our use case,
> > 
> > Which is?
> > 
> > -Dave.
> > -- 
> > Dave Chinner
> > david@fromorbit.com

  reply	other threads:[~2023-03-02  8:41 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-02-28  9:31 [RFC v2 bpf-next 0/9] mm/bpf/perf: Store build id in inode object Jiri Olsa
2023-02-28  9:31 ` [PATCH RFC v2 bpf-next 1/9] mm: " Jiri Olsa
2023-02-28 19:13   ` Andrew Morton
2023-03-01  8:16     ` Jiri Olsa
2023-02-28  9:31 ` [PATCH RFC v2 bpf-next 2/9] bpf: Use file's inode object build id in stackmap Jiri Olsa
2023-02-28  9:32 ` [PATCH RFC v2 bpf-next 3/9] perf: Use file object build id in perf_event_mmap_event Jiri Olsa
2023-02-28  9:32 ` [PATCH RFC v2 bpf-next 4/9] libbpf: Allow to resolve binary path in current directory Jiri Olsa
2023-03-08  1:19   ` Andrii Nakryiko
2023-03-08 13:48     ` Jiri Olsa
2023-02-28  9:32 ` [PATCH RFC v2 bpf-next 5/9] selftests/bpf: Add read_buildid function Jiri Olsa
2023-03-08  1:22   ` Andrii Nakryiko
2023-03-08 13:49     ` Jiri Olsa
2023-02-28  9:32 ` [PATCH RFC v2 bpf-next 6/9] selftests/bpf: Add err.h header Jiri Olsa
2023-02-28  9:32 ` [PATCH RFC v2 bpf-next 7/9] selftests/bpf: Replace extract_build_id with read_build_id Jiri Olsa
2023-03-08  1:26   ` Andrii Nakryiko
2023-03-08 13:51     ` Jiri Olsa
2023-02-28  9:32 ` [PATCH RFC v2 bpf-next 8/9] selftests/bpf: Add inode_build_id test Jiri Olsa
2023-02-28  9:32 ` [PATCH RFC v2 bpf-next 9/9] selftests/bpf: Add iter_task_vma_buildid test Jiri Olsa
2023-03-08  1:32   ` Andrii Nakryiko
2023-03-08 14:00     ` Jiri Olsa
2023-02-28 22:07 ` [RFC v2 bpf-next 0/9] mm/bpf/perf: Store build id in inode object Dave Chinner
2023-03-01 15:41   ` Arnaldo Carvalho de Melo
2023-03-02  8:41     ` Jiri Olsa [this message]
2023-03-02  8:35   ` Jiri Olsa

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=ZABhM913DI+DYSjL@krava \
    --to=olsajiri@gmail.com \
    --cc=acme@kernel.org \
    --cc=akpm@linux-foundation.org \
    --cc=andrii@kernel.org \
    --cc=ast@kernel.org \
    --cc=bpf@vger.kernel.org \
    --cc=daniel@iogearbox.net \
    --cc=david@fromorbit.com \
    --cc=haoluo@google.com \
    --cc=john.fastabend@gmail.com \
    --cc=kafai@fb.com \
    --cc=kpsingh@chromium.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=linux-perf-users@vger.kernel.org \
    --cc=mingo@redhat.com \
    --cc=namhyung@gmail.com \
    --cc=peterz@infradead.org \
    --cc=sdf@google.com \
    --cc=songliubraving@fb.com \
    --cc=viro@zeniv.linux.org.uk \
    --cc=willy@infradead.org \
    --cc=yhs@fb.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;
as well as URLs for NNTP newsgroup(s).