On Mon, 8 Sept 2025 at 16:09, Linus Torvalds <torva...@linux-foundation.org> wrote: > > Make the "give me the expensive output" be a dynamic flag, so that you > don't do it by default, but if you have some model where you are > scripting things with shell-script rather than doing 'perf record', at > least you get good output.
Side note: you could make that dynamic flag be basically "per-target", by having the *tracer* open the files that it wants to match against, and guaranteeing that the dentry stays around by virtue of having opened the files. Then - I'm handwaving a bit here - you could have some "hash the dentry pointer" model. In that model, you couldn't use the 'struct file' hash, because now you're matching against different 'open()' cases: the tracer that uses sysfs would open the executable and the libraries it knows it is going to trace, and keep them open for the duration of the trace in order to have stable hashes for those files. All the tracer would need is some simple interface to "give me the hash for the file I just opened", and then it could easily match that against any hashes it sees in sysfs stack traces. The advantage of this model is that now the tracer not only has the hash, and controls the lifetime, it means that the tracer also can decide to look up build IDs etc if it wants to. The disadvantage is obvious, though: this requires that the tracer know what the files in question are. Of course, that's usually not that hard. You might literally just know it a-priori (ie just from what you are tracing along with having run 'ldd' etc), but for the 'I'm tracing a running process' you can use that /proc/<pid>/maps file to start populating your hash information. I'm *not* claiming this is a wonderful interface, but it's at least a *fairly* straightforward way to give some kind of cheap hash ID for the user space traces, and it puts the burden of "hash lifetime" clearly on user space, not on the kernel having to try to maintain some kind of hash map. In other words: if user space wants to get good information, maybe user space needs to work at it a bit. The kernel side shouldn't be made complicated or be expected to bend over backwards. Linus