On Sat, 23 Dec 2023, Chris Li wrote: > > How do you quantify the impact of the delayed swap_entry_free()? > > > > Since the free and memcg uncharge are now delayed, is there not the > > possibility that we stay under memory pressure for longer? (Assuming at > > least some users are swapping because of memory pressure.) > > > > I would assume that since the free and uncharge itself is delayed that in > > the pathological case we'd actually be swapping *more* until the async > > worker can run. > > Thanks for raising this interesting question. > > First of all, the swap_entry_free() does not impact "memory.current". > It reduces "memory.swap.current". Technically it is the swap pressure > not memory pressure that suffers the extra delay. > > Secondly, we are talking about delaying up to 64 swap entries for a > few microseconds. What guarantees that the async freeing happens within a few microseconds? > Where the swap slot cache itself delays the freeing > of the entries for an arbitrary amount of time. It is not freed until > the cache is full of 64 entries. This delay can be seconds or even > minutes. Adding a few microseconds of extra delay to existing seconds > delay really makes no difference from the swap pressure point of view. > > Chris >