On Tue, Mar 12, 2024 at 10:13 AM Alexei Starovoitov alexei.starovoitov@gmail.com wrote:
On Mon, Mar 11, 2024 at 7:05 PM 梦龙董 dongmenglong.8@bytedance.com wrote:
+LIBBPF_API void bpf_object__free_btfs(struct bpf_object *obj);
It shouldn't be exported. libbpf should clean it up when bpf_object is freed.
Yes, libbpf will clean up the btfs when bpf_object is freed in this commit. And I'm trying to offer a way to early free the btfs by the users manual to reduce the memory usage. Or, the btfs that we opened will keep existing until we close the bpf_object.
This is optional, I can remove it if you prefer.
Let's not extend libbpf api unless we really need to. bpf_program__attach_trace_multi_opts() and *skel*__attach() can probably free them.
That's a good idea! Should we add a "bool free_btf" field to struct bpf_trace_multi_opts? bpf_program__attach_trace_multi_opts() can be called multi times for a bpf_object, which has multi bpf program of type tracing multi-link. Or, can we free the btfs automatically if we found all tracing multi-link programs are attached?
Thanks! Menglong Dong
I don't see a use case where you'd want to keep them afterwards.