]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
mm, swap: remove fragment clusters counter
authorKairui Song <kasong@tencent.com>
Wed, 6 Aug 2025 16:17:47 +0000 (00:17 +0800)
committerAndrew Morton <akpm@linux-foundation.org>
Fri, 12 Sep 2025 00:24:38 +0000 (17:24 -0700)
It was used for calculating the iteration number when the swap allocator
wants to scan the whole fragment list.  Now the allocator only scans one
fragment cluster at a time, so no one uses this counter anymore.

Remove it as a cleanup; the performance change is marginal:

Build linux kernel using 10G ZRAM, make -j96, defconfig with 2G cgroup
memory limit, on top of tmpfs, 64kB mTHP enabled:

Before:  sys time: 6278.45s
After:   sys time: 6176.34s

Change to 8G ZRAM:

Before:  sys time: 5572.85s
After:   sys time: 5531.49s

Link: https://lkml.kernel.org/r/20250806161748.76651-3-ryncsn@gmail.com
Signed-off-by: Kairui Song <kasong@tencent.com>
Reviewed-by: Nhat Pham <nphamcs@gmail.com>
Acked-by: Chris Li <chrisl@kernel.org>
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>
include/linux/swap.h
mm/swapfile.c

index 7012a0f758d84a9954267c72ad28df7be1f6cad1..f32f76ceb243059469a9d300e0c415e99b1d5b4d 100644 (file)
@@ -310,7 +310,6 @@ struct swap_info_struct {
                                        /* list of cluster that contains at least one free slot */
        struct list_head frag_clusters[SWAP_NR_ORDERS];
                                        /* list of cluster that are fragmented or contented */
-       atomic_long_t frag_cluster_nr[SWAP_NR_ORDERS];
        unsigned int pages;             /* total of usable pages of swap */
        atomic_long_t inuse_pages;      /* number of those currently in use */
        struct swap_sequential_cluster *global_cluster; /* Use one global cluster for rotating device */
index 1f1110e37f68bfcf5e6c3450501362ffb9b9e5d8..5fdb3cb2b8b7ab020dbe0a309ff6334146d0b749 100644 (file)
@@ -470,11 +470,6 @@ static void move_cluster(struct swap_info_struct *si,
        else
                list_move_tail(&ci->list, list);
        spin_unlock(&si->lock);
-
-       if (ci->flags == CLUSTER_FLAG_FRAG)
-               atomic_long_dec(&si->frag_cluster_nr[ci->order]);
-       else if (new_flags == CLUSTER_FLAG_FRAG)
-               atomic_long_inc(&si->frag_cluster_nr[ci->order]);
        ci->flags = new_flags;
 }
 
@@ -965,7 +960,6 @@ new_cluster:
                 * allocation, but reclaim may drop si->lock and race with another user.
                 */
                while ((ci = isolate_lock_cluster(si, &si->frag_clusters[o]))) {
-                       atomic_long_dec(&si->frag_cluster_nr[o]);
                        found = alloc_swap_scan_cluster(si, ci, cluster_offset(si, ci),
                                                        0, usage);
                        if (found)
@@ -3217,7 +3211,6 @@ static struct swap_cluster_info *setup_clusters(struct swap_info_struct *si,
        for (i = 0; i < SWAP_NR_ORDERS; i++) {
                INIT_LIST_HEAD(&si->nonfull_clusters[i]);
                INIT_LIST_HEAD(&si->frag_clusters[i]);
-               atomic_long_set(&si->frag_cluster_nr[i], 0);
        }
 
        /*