Chris Li <chriscli@xxxxxxxxxx> writes: > On Thu, Nov 16, 2023 at 12:19 PM Yosry Ahmed <yosryahmed@xxxxxxxxxx> wrote: >> >> Not bypassing the swap slot cache, just make the callbacks to >> invalidate the zswap entry, do memg uncharging, etc when the slot is >> no longer used and is entering the swap slot cache (i.e. when >> free_swap_slot() is called), instead of when draining the swap slot >> cache (i.e. when swap_range_free() is called). For all parts of MM >> outside of swap, the swap entry is freed when free_swap_slot() is >> called. We don't free it immediately because of caching, but this >> should be transparent to other parts of MM (e.g. zswap, memcg, etc). > > That will cancel the batching effect on the swap slot free, making the > common case for swapping faults take longer to complete, righ? > If I recall correctly, the uncharge is the expensive part of the swap > slot free operation. > I just want to figure out what we are trading off against. This is not > one side wins all situations. Per my understanding, we don't batch memcg uncharging in swap_entry_free() now. Although it's possible and may improve performance. -- Best Regards, Huang, Ying