On Wed, Jul 31, 2024 at 6:49 PM <chrisl@xxxxxxxxxx> wrote: > > From: Kairui Song <kasong@xxxxxxxxxxx> > > Currently when we are freeing mTHP folios from swap cache, we free > then one by one and put each entry into swap slot cache. Slot > cache is designed to reduce the overhead by batching the freeing, > but mTHP swap entries are already continuous so they can be batch > freed without it already, it saves litle overhead, or even increase > overhead for larger mTHP. > > What's more, mTHP entries could stay in swap cache for a while. > Contiguous swap entry is an rather rare resource so releasing them > directly can help improve mTHP allocation success rate when under > pressure. > > Signed-off-by: Kairui Song <kasong@xxxxxxxxxxx> Acked-by: Barry Song <baohua@xxxxxxxxxx> I believe this is the right direction to take. Currently, entries are released one by one, even when they are contiguous in the swap file(those nr_pages entries are definitely in the same cluster and same si), leading to numerous lock and unlock operations. This approach provides batched support. free_swap_and_cache_nr() has the same issue, so I drafted a patch based on your code. I wonder if you can also help test and review before I send it officially: