On Fri, May 5, 2023 at 1:40 AM Michal Hocko <mhocko@xxxxxxxx> wrote: > > On Thu 04-05-23 09:22:07, Suren Baghdasaryan wrote: > [...] > > > But even then I really detest an additional allocation from this context > > > for every single allocation request. There GFP_NOWAIT allocation for > > > steckdepot but that is at least cached and generally not allocating. > > > This will allocate for every single allocation. > > > > A small correction here. alloc_tag_create_ctx() is used only for > > allocations which we requested to capture the context. So, this last > > sentence is true for allocations we specifically marked to capture the > > context, not in general. > > Ohh, right. I have misunderstood that part. Slightly better, still > potentially a scalability issue because hard to debug memory leaks > usually use a generic caches (for kmalloc). So this might be still a lot > of objects to track. Yes, generally speaking, if a single code location is allocating very frequently then enabling context capture for it will generate many callstack buffers. Your note about use of generic caches makes me think we still have a small misunderstanding. We tag at the allocation call site, not based on which cache is used. Two kmalloc calls from different code locations will have unique codetags for each, so enabling context capture for one would not result in context capturing for the other one. > > > > There must be a better way. > > > > Yeah, agree, it would be good to avoid allocations in this path. Any > > specific ideas on how to improve this? Pooling/caching perhaps? I > > think kmem_cache does some of that already but maybe something else? > > The best I can come up with is a preallocated hash table to store > references to stack depots with some additional data associated. The > memory overhead could be still quite big but the hash tables could be > resized lazily. Ok, that seems like the continuation of you suggestion in another thread to combine identical callstack traces. That's an excellent idea! I think it would not be hard to implement. Thanks! > -- > Michal Hocko > SUSE Labs