diff options
author | Kairui Song <kasong@tencent.com> | 2025-08-06 19:17:48 +0300 |
---|---|---|
committer | Andrew Morton <akpm@linux-foundation.org> | 2025-09-14 02:54:44 +0300 |
commit | 9a42aed48421390155037460a3f2fd510fa6df76 (patch) | |
tree | ec202bb2bf6dcbbb8bdf66e3c316fb994a1fca14 /rust/helpers/vmalloc.c | |
parent | 913fff314547c1922002e655bb25199ee38e8825 (diff) | |
download | linux-9a42aed48421390155037460a3f2fd510fa6df76.tar.xz |
mm, swap: prefer nonfull over free clusters
We prefer a free cluster over a nonfull cluster whenever a CPU local
cluster is drained to respect the SSD discard behavior [1]. It's not a
best practice for non-discarding devices. And this is causing a higher
fragmentation rate.
So for a non-discarding device, prefer nonfull over free clusters. This
reduces the fragmentation issue by a lot.
Testing with make -j96, defconfig, using 64k mTHP, 8G ZRAM:
Before: sys time: 6176.34s 64kB/swpout: 1659757 64kB/swpout_fallback: 139503
After: sys time: 6194.11s 64kB/swpout: 1689470 64kB/swpout_fallback: 56147
Testing with make -j96, defconfig, using 64k mTHP, 10G ZRAM:
After: sys time: 5531.49s 64kB/swpout: 1791142 64kB/swpout_fallback: 17676
After: sys time: 5587.53s 64kB/swpout: 1811598 64kB/swpout_fallback: 0
Performance is basically unchanged, and the large allocation failure rate
is lower. Enabling all mTHP sizes showed a more significant result.
Using the same test setup with 10G ZRAM and enabling all mTHP sizes:
128kB swap failure rate:
Before: swpout:451599 swpout_fallback:54525
After: swpout:502710 swpout_fallback:870
256kB swap failure rate:
Before: swpout:63652 swpout_fallback:2708
After: swpout:65913 swpout_fallback:20
512kB swap failure rate:
Before: swpout:11663 swpout_fallback:1767
After: swpout:14480 swpout_fallback:6
2M swap failure rate:
Before: swpout:24 swpout_fallback:1442
After: swpout:1329 swpout_fallback:7
The success rate of large allocations is much higher.
Link: https://lore.kernel.org/linux-mm/87v8242vng.fsf@yhuang6-desk2.ccr.corp.intel.com/ [1]
Link: https://lkml.kernel.org/r/20250806161748.76651-4-ryncsn@gmail.com
Signed-off-by: Kairui Song <kasong@tencent.com>
Acked-by: Chris Li <chrisl@kernel.org>
Reviewed-by: Nhat Pham <nphamcs@gmail.com>
Cc: Baoquan He <bhe@redhat.com>
Cc: Barry Song <baohua@kernel.org>
Cc: "Huang, Ying" <ying.huang@linux.alibaba.com>
Cc: Kemeng Shi <shikemeng@huaweicloud.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Diffstat (limited to 'rust/helpers/vmalloc.c')
0 files changed, 0 insertions, 0 deletions