On Fri, May 12, 2023 at 06:09:20PM -0300, Jason Gunthorpe wrote: > On Fri, May 12, 2023 at 06:45:13PM +1000, Alistair Popple wrote: > > > However review comments suggested it needed to be added as part of > > memcg. As soon as we do that we have to address how we deal with shared > > memory. If we stick with the original RLIMIT proposal this discussion > > goes away, but based on feedback I think I need to at least investigate > > integrating it into memcg to get anything merged. > > Personally I don't see how we can effectively solve the per-page > problem without also tracking all the owning memcgs for every > page. This means giving each struct page an array of memcgs > > I suspect this will be too expensive to be realistically > implementable. Agree. To get the precise shared usage count, it needs to track the usage at the page level. It is possible to track just <smemcg,memcg> pair at the leaf node of the memcg. At the parent memcg it needs to avoid counting the same page twice. So it does need to track per page memcgs set that it belongs to. Chris > If it is done then we may not even need a pin controller on its own as > the main memcg should capture most of it. (althought it doesn't > distinguish between movable/swappable and non-swappable memory) > But this is all being done for the libvirt people, so it would be good > to involve them > > Jason >