From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 13E1CC369DC for ; Wed, 30 Apr 2025 00:54:33 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 1B2A76B00C4; Tue, 29 Apr 2025 20:54:31 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 0EDC56B00C6; Tue, 29 Apr 2025 20:54:31 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id E9CFA6B00C5; Tue, 29 Apr 2025 20:54:30 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id C69386B00C3 for ; Tue, 29 Apr 2025 20:54:30 -0400 (EDT) Received: from smtpin07.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 58BF714149D for ; Tue, 29 Apr 2025 23:39:08 +0000 (UTC) X-FDA: 83388699576.07.1AE744A Received: from mail-yw1-f176.google.com (mail-yw1-f176.google.com [209.85.128.176]) by imf24.hostedemail.com (Postfix) with ESMTP id 95274180004 for ; Tue, 29 Apr 2025 23:39:06 +0000 (UTC) Authentication-Results: imf24.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=Qnnz+OWr; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf24.hostedemail.com: domain of nphamcs@gmail.com designates 209.85.128.176 as permitted sender) smtp.mailfrom=nphamcs@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1745969946; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=n7Y1LUcjO0i0d9KEbjRFxqx4ocs8427R84SBdDQ2ggo=; b=gCirbkmxQUBF0jTyS3scHjfMpprs6TfkKBPBfndVnhAXEE6REWi9k0jvBGP66q69r/yaZP FA49K7zn2D8BzLZd0kgL0+ZCNTW6mte1p/fjXz3AUJ/tawKP0sLEZvJHW29Xc9YMUTY83v KP318jamsw0QyOhzLBTs7xxiug4r1TE= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1745969946; a=rsa-sha256; cv=none; b=6V6xn3KIAX8+zvfQ/lbr0u5+H3FOD7hdY8A+PtaI5DW+ZWG/BBtwRTtEwC04sKYxtL3Ey1 XfL9S25scjDI60JLA5sm5CWDaQ+NFBQCkOrKrTdmpsP6soBBW0KHraSH4q0hhiPETl5p81 PrJ0dRNlxFJt8b27My2MI1cwG+zQTJw= ARC-Authentication-Results: i=1; imf24.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=Qnnz+OWr; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf24.hostedemail.com: domain of nphamcs@gmail.com designates 209.85.128.176 as permitted sender) smtp.mailfrom=nphamcs@gmail.com Received: by mail-yw1-f176.google.com with SMTP id 00721157ae682-6fead317874so56456157b3.0 for ; Tue, 29 Apr 2025 16:39:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1745969945; x=1746574745; darn=kvack.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=n7Y1LUcjO0i0d9KEbjRFxqx4ocs8427R84SBdDQ2ggo=; b=Qnnz+OWrVTLsJyglwvyhWZ0s62qUbsPO9fW2hH8vMgzHBFtNg1O38CwSWTTX98KRPH pqSRKn6co4Y1QLCI4hktN3kxmc7qup20yaohCCqxXuKRIRC+untW6/yEyf5/41nUQ57+ uEJtEUdu1TX5tUWiipF3zmmRgcLp7EeMshIxjBxHg0mU07N45yJDQe+dvFbbVAlXRajl otMuXk/f7hyR/5WwVO1vVUW2dk/UxWnM0KPACF+hHoXeODPIh9flZreMV1nvzz68kDuv QBn49KaZpBp5dFkBShtObqVJH3/OCQyRWarVm1Q7IwePMsXlEEgwrg9utp+klqEqxkOE Piyg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745969945; x=1746574745; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=n7Y1LUcjO0i0d9KEbjRFxqx4ocs8427R84SBdDQ2ggo=; b=hQ6rzNKxgJ+W+PFuovPhl2fqstGKHDSRekXFpbNTGFuSzl95a+8UwZueKVondh3wIJ qDg0P080NCaCY92DzAat75rYJ7nF4oEpQZdGqnwXKd4hlc2v19tLZrHXYlNVFeKQSMjg PJV3evuZuov9mjbMrTJkIpjkOoHjl8ntryMMBKHEZK43HVNcq64WxrtNwm9MPLb1gcjl sfx/+bd14aHwXbWuhrJdVb5MYs2o64rBzQOobvRDWVjjlvuO5kiLwPcWxSq0axBS/loG bsTaXNg/7wDg2L97+nDl18byTpgZJtOO1HZgvn4YM5yDDRpuJMMVemyL4sSERiKxs0+v FBfQ== X-Gm-Message-State: AOJu0Yz4scIaoPC3abTcvo9H8/9B4T0UALGdgmo3DmI1hLobgIiZDPGg tdVoRJd+RpxQhPZI+lGzmTwiYAXcdMFqv/mC2V/703ppp1muGZ4eUSobSw== X-Gm-Gg: ASbGncs75GRdbRo2RN+i+m94II20/wz4/lBrjzJUoncxxomCq/PKn8zfsKS+/wSkv7H FHsRVRjdprBe8dLHgZ7+teAiNhwOGYlkHDVswzHysUbwhpCPvxWbDwn3Lk7A1PP6l9nlxhYpgU/ ll9FK835mzmBEB3Ifl2rsrikVuUPP/oD5QYxuVubfH+7YaZgoIVbIJqMCJEI99CPOOrvb5Fkxyd dwJC6QMIu2XLsYAsKAVpDQ34T1boVmV44VFtYKaroOXoCJBTQCTfIImgSJHD+75CRm1pCDV4B6g GekQiM2gU40LxEYGzPJPfY/9cJLO X-Google-Smtp-Source: AGHT+IGWumwdLV+HkJwjKnK300YNBa45olDNOQIScWwSpDt70t/8c1Fec7a0C3Mk2LkTlhHYM6Jf2A== X-Received: by 2002:a05:690c:39b:b0:703:c3be:24ad with SMTP id 00721157ae682-708abd7d5a6mr19013757b3.14.1745969945613; Tue, 29 Apr 2025 16:39:05 -0700 (PDT) Received: from localhost ([2a03:2880:25ff::]) by smtp.gmail.com with ESMTPSA id 00721157ae682-708ae1e6038sm707687b3.97.2025.04.29.16.39.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 29 Apr 2025 16:39:05 -0700 (PDT) From: Nhat Pham To: linux-mm@kvack.org Cc: akpm@linux-foundation.org, hannes@cmpxchg.org, hughd@google.com, yosry.ahmed@linux.dev, mhocko@kernel.org, roman.gushchin@linux.dev, shakeel.butt@linux.dev, muchun.song@linux.dev, len.brown@intel.com, chengming.zhou@linux.dev, kasong@tencent.com, chrisl@kernel.org, huang.ying.caritas@gmail.com, ryan.roberts@arm.com, viro@zeniv.linux.org.uk, baohua@kernel.org, osalvador@suse.de, lorenzo.stoakes@oracle.com, christophe.leroy@csgroup.eu, pavel@kernel.org, kernel-team@meta.com, linux-kernel@vger.kernel.org, cgroups@vger.kernel.org, linux-pm@vger.kernel.org, peterx@redhat.com Subject: [RFC PATCH v2 18/18] swapfile: remove zeromap in virtual swap implementation Date: Tue, 29 Apr 2025 16:38:46 -0700 Message-ID: <20250429233848.3093350-19-nphamcs@gmail.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250429233848.3093350-1-nphamcs@gmail.com> References: <20250429233848.3093350-1-nphamcs@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Rspamd-Server: rspam12 X-Rspamd-Queue-Id: 95274180004 X-Rspam-User: X-Stat-Signature: 7xq5f7uifqfgqybbokfjcmb37acntpq3 X-HE-Tag: 1745969946-658146 X-HE-Meta: U2FsdGVkX18CdlFjWHrNTADjAqo98+eU2Cgc2iM0xjoN5m34mC+zYgNwvTkY7UblU/XBUC8pUqybw4qelRaXAumufIpgZC8WxX+PI3dBT898cOglpKcQ1LfLrMg/3T/UWkM7bAyzGkzN713eJ1D1kIwsRLmR5pA1IlGqIRHDj1V7NTOcRuKqVTPOH8B33HcfsOhe2l15IEZrn3B0Eq9IwAuBnNFp3yAJjLgfxzudh0zKw9odP92nNcq3CO51CCnf7CGfTGabGMLIb1Bsdj5JCc76Aj5SDXSulkVRgIcedbOAO9k1Gtdkxt9WMkJydgoAI1AwAZUeOFB4t4OityvOZxgMsqujdvTglN1/iIKktkN/0vmeMAcILYS7Yc5w+S6c1bDzd8jg7VSznA23dshu+PpL7AYonJedz4aKHSyyIAyF0RCoWifTCbsHxkks9E5ToBR2iLRxU/frWFH2KFsOR6ny41OVMqtoEjoMwiNaZ+G4SKD8t+T01183cfoB0FI9SfyZidKG+X4/0gpXetYks8cTWHCuWKp8lNy1PqSBOIuLHvhvPueSS414/jjoOut4R7EY6FRNu9PRorOWWx3s+k9fcjJ+lUqN7g6tIJyFnQsrfiOdIHjeWdJiOPjBOHRT28ddhpYqfS5iH+9w3a92ivEx4iOCW24SzuKcgJQ5xz7rIYqykJMgStUP4U3JtNskIZ7EpENOHc3nYcvH16l0Oz3o00ymmmKzqyFkYXzDFaWUu27yMM5nPBNgh9NxA7SrMD5fzWB6IKtPUu3zMIceZBY801Ojfc6Arais9Xu7mRX458RFWvKVXEUflsYfHtLB9sDUqsyhITsx/zWJS2V9BPS1PSw7WFQ8JWDiAFgpKs2qkjPRKc94RbkHt/9B0G2bwU1rKZpYJOZi5GRaUDZ97J+86c1ojquEaMVLdgpM6+A07qLoA4NP/ElU04ssuRNAdbNdqkbgP9dpE9wwuY4 aHAPcgQ3 LInQGIvWzaMxQQDDXxl/jetQn5ue9Z72aIWITQ4d0urCdNzL+ROEMYaqoYlqeENyTHqLC7osA8gwlNjCDXeI+ZH14S4CTG6HtAS8NFlLO7P3pu0qNjhXfBnp5SHHY5rW2lurvn1YvFA6384b8hJoffJ0IxF22zNsTZgGKvMDGUyqjrWCILYRG3aKD8MfjQUFg6aMtZ6IwpVDgWvJIxj+nuIZS484WwLVC1NtENzlgSmf6NQjXmOgVRNZVHAMFf6OKwJQvRgrS2dFSY6yC0N4OKB8N12LwC/efWOzli+cvncMJ1nb/LSuKtTUDrpm5BqrTx2q0xeNY+TA4+dKy3bYnDIcMvtr32I2fQ3RQUvpbHb2raUSar7wfW7YQpGQkGZwGZaTtGwbS+7COAixx2S2IIZyDCXi7jsGaOVz1po8g7QBMME9QbTVeCZoBaVDbs4MOaigVrYf83gkpm/hdacV4kDuhDx2k2PI2IsLh3HOXnQUSCwsqtwWMAfMaRQ== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: We are not using the zeromap for swapped out zero-filled pages in the virtual swap implementation. Remove it. This saves about 1 bit per physical swap slot. Signed-off-by: Nhat Pham --- include/linux/swap.h | 2 ++ mm/swapfile.c | 12 ++++++++++++ 2 files changed, 14 insertions(+) diff --git a/include/linux/swap.h b/include/linux/swap.h index 0c585103d228..408368d56dfb 100644 --- a/include/linux/swap.h +++ b/include/linux/swap.h @@ -312,7 +312,9 @@ struct swap_info_struct { signed char type; /* strange name for an index */ unsigned int max; /* extent of the swap_map */ unsigned char *swap_map; /* vmalloc'ed array of usage counts */ +#ifndef CONFIG_VIRTUAL_SWAP unsigned long *zeromap; /* kvmalloc'ed bitmap to track zero pages */ +#endif struct swap_cluster_info *cluster_info; /* cluster info. Only for SSD */ struct list_head free_clusters; /* free clusters list */ struct list_head full_clusters; /* full clusters list */ diff --git a/mm/swapfile.c b/mm/swapfile.c index 3ed7edc800fe..3d99bd02ede9 100644 --- a/mm/swapfile.c +++ b/mm/swapfile.c @@ -2824,7 +2824,9 @@ static void enable_swap_info(struct swap_info_struct *si, int prio, spin_lock(&swap_lock); spin_lock(&si->lock); setup_swap_info(si, prio, swap_map, cluster_info); +#ifndef CONFIG_VIRTUAL_SWAP si->zeromap = zeromap; +#endif spin_unlock(&si->lock); spin_unlock(&swap_lock); /* @@ -2885,7 +2887,9 @@ SYSCALL_DEFINE1(swapoff, const char __user *, specialfile) { struct swap_info_struct *p = NULL; unsigned char *swap_map; +#ifndef CONFIG_VIRTUAL_SWAP unsigned long *zeromap; +#endif struct swap_cluster_info *cluster_info; struct file *swap_file, *victim; struct address_space *mapping; @@ -3000,8 +3004,10 @@ SYSCALL_DEFINE1(swapoff, const char __user *, specialfile) p->max = 0; swap_map = p->swap_map; p->swap_map = NULL; +#ifndef CONFIG_VIRTUAL_SWAP zeromap = p->zeromap; p->zeromap = NULL; +#endif cluster_info = p->cluster_info; p->cluster_info = NULL; spin_unlock(&p->lock); @@ -3014,7 +3020,9 @@ SYSCALL_DEFINE1(swapoff, const char __user *, specialfile) kfree(p->global_cluster); p->global_cluster = NULL; vfree(swap_map); +#ifndef CONFIG_VIRTUAL_SWAP kvfree(zeromap); +#endif kvfree(cluster_info); /* Destroy swap account information */ swap_cgroup_swapoff(p->type); @@ -3601,6 +3609,7 @@ SYSCALL_DEFINE2(swapon, const char __user *, specialfile, int, swap_flags) goto bad_swap_unlock_inode; } +#ifndef CONFIG_VIRTUAL_SWAP /* * Use kvmalloc_array instead of bitmap_zalloc as the allocation order might * be above MAX_PAGE_ORDER incase of a large swap file. @@ -3611,6 +3620,7 @@ SYSCALL_DEFINE2(swapon, const char __user *, specialfile, int, swap_flags) error = -ENOMEM; goto bad_swap_unlock_inode; } +#endif if (si->bdev && bdev_stable_writes(si->bdev)) si->flags |= SWP_STABLE_WRITES; @@ -3722,7 +3732,9 @@ SYSCALL_DEFINE2(swapon, const char __user *, specialfile, int, swap_flags) si->flags = 0; spin_unlock(&swap_lock); vfree(swap_map); +#ifndef CONFIG_VIRTUAL_SWAP kvfree(zeromap); +#endif kvfree(cluster_info); if (inced_nr_rotate_swap) atomic_dec(&nr_rotate_swap); -- 2.47.1