Re: [PATCH 2/4] bpf: Add dmabuf iterator
From: Song Liu
Date: Thu Apr 17 2025 - 00:57:08 EST
On Wed, Apr 16, 2025 at 7:09 PM T.J. Mercier <tjmercier@xxxxxxxxxx> wrote:
>
> On Wed, Apr 16, 2025 at 6:26 PM Song Liu <song@xxxxxxxxxx> wrote:
[...]
> >
> > Here is another rookie question, it appears to me there is a file descriptor
> > associated with each DMA buffer, can we achieve the same goal with
> > a task-file iterator?
>
> That would find almost all of them, but not the kernel-only
> allocations. (kernel_rss in the dmabuf_dump output I attached earlier.
> If there's a leak, it's likely to show up in kernel_rss because some
> driver forgot to release its reference(s).) Also wouldn't that be a
> ton more iterations since we'd have to visit every FD to find the
> small portion that are dmabufs? I'm not actually sure if buffers that
> have been mapped, and then have had their file descriptors closed
> would show up in task_struct->files; if not I think that would mean
> scanning both files and vmas for each task.
I don't think scanning all FDs to find a small portion of specific FDs
is a real issue. We have a tool that scans all FDs in the system and
only dump data for perf_event FDs. I think it should be easy to
prototype a tool by scanning all files and all vmas. If that turns out
to be very slow, which I highly doubt will be, we can try other
approaches.
OTOH, I am wondering whether we can build a more generic iterator
for a list of objects. Adding a iterator for each important kernel lists
seems not scalable in the long term.
Thanks,
Song