+4
−4
+27
−14
+3
−3
+205
−55
Loading
Merge Pull Request from: @wedm23414 community inclusion category: feature bugzilla: https://gitee.com/openeuler/kernel/issues/IAOMRL Reference: https://lore.kernel.org/all/b371eadb27f42fc51261c51008fbb9a334985b4c.1723434324.git.baolin.wang@linux.alibaba.com/ -------------------------------- Shmem will support large folio allocation [1] [2] to get a better performance, however, the memory reclaim still splits the precious large folios when trying to swap-out shmem, which may lead to the memory fragmentation issue and can not take advantage of the large folio for shmeme. Moreover, the swap code already supports for swapping out large folio without split, and large folio swap-in[3] series is queued into mm-unstable branch. Hence this patch set also supports the large folio swap-out and swap-in for shmem. Please help to review. Thanks. Functional testing ================== Machine environment: 32 Arm cores, 120G memory and 50G swap device. 1. Run xfstests suite to test tmpfs filesystem, and I did not catch any regressions with this patch set. FSTYP=tmpfs export TEST_DIR=/mnt/tempfs_mnt export TEST_DEV=/mnt/tempfs_mnt export SCRATCH_MNT=/mnt/scratchdir export SCRATCH_DEV=/mnt/scratchdir 2. Run all mm selftests in tools/testing/selftests/mm/, and no regressions found. 3. I also wrote several shmem swap test cases, including shmem splitting, shmem swapout, shmem swapin, swapoff during shmem swapout, shmem reclaim, shmem swapin replacement, etc. I tested these cases under 4K and 64K shmem folio sizes with a swap device, and shmem swap functionality works well on my machine. [1] https://lore.kernel.org/all/cover.1717495894.git.baolin.wang@linux.alibaba.com/ [2] https://lore.kernel.org/all/20240515055719.32577-1-da.gomez@samsung.com/ [3] https://lore.kernel.org/all/20240508224040.190469-6-21cnbao@gmail.com/T/ [4] https://lore.kernel.org/all/8db63194-77fd-e0b8-8601-2bbf04889a5b@google.com/ Baolin Wang (8): mm: swap: extend swap_shmem_alloc() to support batch SWAP_MAP_SHMEM flag setting mm: shmem: extend shmem_partial_swap_usage() to support large folio swap mm: filemap: use xa_get_order() to get the swap entry order mm: shmem: use swap_free_nr() to free shmem swap entries mm: shmem: support large folio allocation for shmem_replace_folio() mm: shmem: drop folio reference count using 'nr_pages' in shmem_delete_from_page_cache() mm: shmem: split large entry if the swapin folio is not large mm: shmem: support large folio swap out Daniel Gomez (1): mm: shmem: return number of pages beeing freed in shmem_free_swap Barry Song (3): mm: extend 'usage' parameter so that cluster_swap_free_nr() can be reused mm/swapfile:__swap_duplicate: drop redundant WRITE_ONCE on swap_map for err cases mm: swap: add nr argument in swapcache_prepare and swapcache_clear to support large folios Wang Lian (2): mm:shmem: Support large folio adjust reliable shmem usage count mm/pageout: Fix kabi broken in writeback_control -- 2.34.1 Link:https://gitee.com/openeuler/kernel/pulls/11561 Reviewed-by:Kefeng Wang <wangkefeng.wang@huawei.com> Signed-off-by:
Zhang Peng <zhangpeng362@huawei.com>