From patchwork Sun Oct 8 09:59:24 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lincheng Yang X-Patchwork-Id: 13412691 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 4A404E95A67 for ; Sun, 8 Oct 2023 10:00:20 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id DA05A6B029B; Sun, 8 Oct 2023 06:00:19 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id D29316B029C; Sun, 8 Oct 2023 06:00:19 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id BA2496B029E; Sun, 8 Oct 2023 06:00:19 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id A1C486B029B for ; Sun, 8 Oct 2023 06:00:19 -0400 (EDT) Received: from smtpin08.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 7E922A0189 for ; Sun, 8 Oct 2023 10:00:19 +0000 (UTC) X-FDA: 81321848958.08.35048EE Received: from mail-oa1-f49.google.com (mail-oa1-f49.google.com [209.85.160.49]) by imf27.hostedemail.com (Postfix) with ESMTP id 9E4224002F for ; Sun, 8 Oct 2023 10:00:17 +0000 (UTC) Authentication-Results: imf27.hostedemail.com; dkim=pass header.d=transsion-corp-partner-google-com.20230601.gappssmtp.com header.s=20230601 header.b=DWX6NZQq; spf=pass (imf27.hostedemail.com: domain of lincheng.yang@transsion.corp-partner.google.com designates 209.85.160.49 as permitted sender) smtp.mailfrom=lincheng.yang@transsion.corp-partner.google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1696759217; 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=zjwttTM8shNa+ZykQipB79DYWo5iJnu0BccYrm9Eubk=; b=dYQn503Yr2tC7IK4STH7eXLQZL6tig5WaSgrSvAmYpiR81nWI/ePnD8Q8Rt69gKhXYXIYs pUUqvhg7d3B8EusN6zskVaGN4VG6KTa62rlS7n2+ScvQM2mrilQzZiFYrbBYbGbwpnqGxv kUIbkAOgR1me27YnoHZTdZFYhTggouY= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1696759217; a=rsa-sha256; cv=none; b=xojOo0/aXM8cvfOQw/biNASEXLUO3xabjQEMVwKvmOXmG8yseZlkbMl4xgk5Mlxt2ljDzE QF/Lmb1OEd1RirenWsMH4247PGlwCZr7E972K4S1PJpBhPfeZOC5wF94us4jl5nbTioAFw tTON98GWja+pJZBRIkIwD++EgirPapg= ARC-Authentication-Results: i=1; imf27.hostedemail.com; dkim=pass header.d=transsion-corp-partner-google-com.20230601.gappssmtp.com header.s=20230601 header.b=DWX6NZQq; spf=pass (imf27.hostedemail.com: domain of lincheng.yang@transsion.corp-partner.google.com designates 209.85.160.49 as permitted sender) smtp.mailfrom=lincheng.yang@transsion.corp-partner.google.com; dmarc=pass (policy=reject) header.from=google.com Received: by mail-oa1-f49.google.com with SMTP id 586e51a60fabf-1e0ee4e777bso2491404fac.3 for ; Sun, 08 Oct 2023 03:00:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=transsion-corp-partner-google-com.20230601.gappssmtp.com; s=20230601; t=1696759216; x=1697364016; 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=zjwttTM8shNa+ZykQipB79DYWo5iJnu0BccYrm9Eubk=; b=DWX6NZQqbl6nkQapf+zQ41rc/5akIXNVl5YdtcqzlcztrJOsVD2jJHM99OR3nl7OO8 rtE0TIiReRq0EtfPq8AIvc14KvgEDrg4qxD8IeujB66DbopxkgqDnPb0tlk2XOx5Nijf 03gEg5Aeofx9LqnAT0zF8JUCDjhNV5Iczez1Zdc5Natu1pH5d5JdSQR75eYXro+9HLlR yS5dQi4Aws65pDISPtKR/t/Kzf5fkvE2qt0OXjCkXz0D9vTzQSS8ud6AFzD3jXH+6T6R Xvt6c/aauYqblazi3boNwoIkdo9igv/HybmQQo/swbm/hZGkYnO/J8LlF0N4ZOj+F2do zchg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1696759216; x=1697364016; 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=zjwttTM8shNa+ZykQipB79DYWo5iJnu0BccYrm9Eubk=; b=pyJ3nr1D+eaKl9BI8okDUYlqmJiR+AgVyh1zXFsNdu1jPuvxuVoX7V1fmY3hKlYhjz Hk58j+mh7p+6p88nbhgP/SKWBMISjg5JtuYRgaM5hcL150D/6LoYjEPbulRBNROhIXlC LDFwC3Z7pMTz/1x/Ku4xDn1uyLo6kRFSrBZZHaFDLKwRhcenIcVpzHQ1bOn8aLmHeaha /BX09bHCz5/9u7dw2sOCwYr9gRA5mXyYERtWfg9fb0b+9ujfqFK47Ryc07QW84YRb22/ UIpSN/ndPxZXDSLbErv2Mci86jZ4sLElbO2rbImproXSNQ/gStj2LPTGcf+oKZhx/jTg S0Fg== X-Gm-Message-State: AOJu0YwEa98IrUB47NBcx8iNHaYrK/2TpawdLHS3a4tEVnG8Nd81fyh5 i48jAtZqLYoD4APg1DiNSVE74Q== X-Google-Smtp-Source: AGHT+IHbSkEM0AN5q48/SQhxJuecJnMxGYLkPP4mU+9ovjZ/3+4gSc8kFKvogvablROZw3L0oZktig== X-Received: by 2002:a05:6871:451:b0:1dc:ddcd:876f with SMTP id e17-20020a056871045100b001dcddcd876fmr15041196oag.41.1696759216748; Sun, 08 Oct 2023 03:00:16 -0700 (PDT) Received: from linchengyang-VB.. ([103.40.76.4]) by smtp.gmail.com with ESMTPSA id u9-20020a17090282c900b001c72c07c9d9sm7126343plz.308.2023.10.08.03.00.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 08 Oct 2023 03:00:16 -0700 (PDT) From: Lincheng Yang X-Google-Original-From: Lincheng Yang To: akpm@linux-foundation.org, rostedt@goodmis.org, mhiramat@kernel.org, willy@infradead.org, hughd@google.com, peterx@redhat.com, mike.kravetz@oracle.com, jgg@ziepe.ca, surenb@google.com, steven.price@arm.com, pasha.tatashin@soleen.com, kirill.shutemov@linux.intel.com, yuanchu@google.com, david@redhat.com, mathieu.desnoyers@efficios.com, dhowells@redhat.com, shakeelb@google.com, pcc@google.com, tytso@mit.edu, 42.hyeyoo@gmail.com, vbabka@suse.cz, catalin.marinas@arm.com, lrh2000@pku.edu.cn, ying.huang@intel.com, mhocko@suse.com, vishal.moola@gmail.com, yosryahmed@google.com, findns94@gmail.com, neilb@suse.de Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org, wanbin.wang@transsion.com, chunlei.zhuang@transsion.com, jinsheng.zhao@transsion.com, jiajun.ling@transsion.com, dongyun.liu@transsion.com, Lincheng Yang Subject: [RFC PATCH 5/5] mm/swapfile: add swapfile_write_enable interface Date: Sun, 8 Oct 2023 17:59:24 +0800 Message-Id: <20231008095924.1165106-6-lincheng.yang@transsion.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20231008095924.1165106-1-lincheng.yang@transsion.com> References: <20231008095924.1165106-1-lincheng.yang@transsion.com> MIME-Version: 1.0 X-Rspamd-Queue-Id: 9E4224002F X-Rspam-User: X-Stat-Signature: kjneyw7a19kdhxrtkdyax1cggn8aco35 X-Rspamd-Server: rspam03 X-HE-Tag: 1696759217-435594 X-HE-Meta: U2FsdGVkX1+VNKc1YIj+5GXxK79i6Vq+IiB2akv4xR6QhAt7+FPH6Q3NDU+ywmnYAVaBqNUueZx6iQ3x/wHzOqrwgTiUIbVmyQ0BAlAEub5kl6oCKU98iVw/jJXR3HG6rZJ98Q0a+lLX0iubTF9ycdu4OS6u0oieAbzY4pB07CW71JZBdediC2EasKn5D1IFiNXdde/SR5BKUJBZVLJh87PtNY0aH4JoRAZq5X5sB7Ygw96SZuvJHhvaitGlL4ytLyV6SFN5oNU0Ou4UQ2Wc97px5d40dyxIAIS72oV4uL0g+OSxwfnucrajrQt1PL2AtytvMvVZPpPWul52GSbTtLV/MqJ9pKF3Aoh5WrRauR8pP8uGmu20ezObxkKvdXCGv3Md/T/RRDpCGaDZ7hKGUg76AZ0W/DQw2og+2kAfMDLyO1LqVw8inq1hxnRHgzCVaT+pvcR0qi4vExm0SwxujjpneOdudnDBd4nCICobBNvCRYhiJnugWWyC4uZj0+p3DedgmAJu/rppbeTdS/Jl1AiLufbu3JTar8GemnS5PYogeBYlfJ+llJAk+JWmGwMVizOuI5dDZ3eyGUe8XeWdnsHK6EVSl8uZ6WSqeeJhSv94dJjwPAe0Fevw29OJNGgrkpoKPgWQqNbQPjWCS+NfNft5Es3mnFqlHmX6aq9AmZv2McskNm/sCGEt1A6hfLBx3+xt6FhmT+Hb/LVfWUN104ZQyJ5PGbUdB+uIorCQQgZSmNxQEnmW05KmbxmJ0A4bE/nKi4W/XyJ7mhrcaft4t3/sEYl+rcPOIVSzGp7sf7NbfL2q2gQSj4WARZN11LMgIsdRccrcPCKKCoR1L3iwOVqchpSCGSJVdOXSMJGR3pRjKY5fFxr7xfBJfHiurYnU/iGz8u9uY0bVH/WeRfA5/j65aeL1EXan3FnA2Umbpbq/XV1SpglGOaid6gjbVuFK3uTyw+DuogJpNOMPPXN 4ExWmD9f NAUMpyToWu5LtJxkGwWqTpYi/HaCcfyGkdPM09lYyIH4C9Qhig3DgYclkpqEZo97pLZ8VbtkxBOJUkzhz+cHo4OTQYdLZZVRtZ8TYDf7CKPkSdYpvqxfDk2Y4A6pFY8KMuCPgdq+gQZ2r6hYLMUW02Sjcp/OTHIxKpbBDLssCA97V/L76mUk+i4P7R8pznRQoHxNs9lnpfSOIepk/ichRG32n7zKQEldRLNT3Evhl3MJGgGTIOaruHilJltddQWu6fuj5LVu0g9p3y1gyQgpyXuhR6HA05hKzP/Fb+rtkgWGpx5pflr60f/AHThVC2DIMdo/Em6LL5XhT54CofUlCudFIBCB0ZuxlIDok5FTF92ecvEB6dL2YrBBE1wDcfWV/XfpgJ1EwhOwHhqO2/Butm5hhMAkmCMFjTXtUlM5C3jgr6fNAuR9/h34zfluZhuAveZyTIPYzldm+qWiQxBfJYe601Yy4sPSjkKnv7TF47BOrPM9bLt8vLQjNzAzC6UjXSLZwkK+bNEXyA6kBAtb6f0y71ZcNQAJyc7+4Rabg+mceq75jU7T/Qci3T/NrU0lVHxNc2LfHw8MDcUQW//HWmupsTiAnqREUFfaF 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: When the user does not want to write back cold pages to swapfile, set /proc/swapfile_write_enable to 0. At this time, all anon pages, regardless of hot or cold status, will be written back to the zram device. Signed-off-by: Lincheng Yang --- mm/swapfile.c | 39 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) diff --git a/mm/swapfile.c b/mm/swapfile.c index 629e6a291e9b..557d1c29be77 100644 --- a/mm/swapfile.c +++ b/mm/swapfile.c @@ -106,6 +106,7 @@ static atomic_t proc_poll_event = ATOMIC_INIT(0); atomic_t nr_rotate_swap = ATOMIC_INIT(0); static unsigned int workingset_restore_limit; +static unsigned int swapfile_write_enable; static struct swap_info_struct *swap_type_to_swap_info(int type) { @@ -127,7 +128,7 @@ bool swap_folio_hot(struct folio *folio, bool hotness) unsigned long restores; int delta; - if (hotness) + if (!swapfile_write_enable || hotness) return true; if (folio_test_swapbacked(folio) && folio_test_hot(folio)) { @@ -2775,10 +2776,46 @@ const struct proc_ops workingset_restore_limit_fops = { .proc_write = workingset_restore_limit_write, }; +static ssize_t swapfile_write_enable_write(struct file *file, + const char __user *ubuf, + size_t count, loff_t *pos) +{ + unsigned int val; + int ret; + + ret = kstrtouint_from_user(ubuf, count, 10, &val); + if (ret) + return ret; + + swapfile_write_enable = val; + + return count; +} + +static int swapfile_write_enable_show(struct seq_file *m, void *v) +{ + seq_printf(m, "%d\n", swapfile_write_enable); + return 0; +} + +static int swapfile_write_enable_open(struct inode *inode, struct file *file) +{ + return single_open(file, swapfile_write_enable_show, inode->i_private); +} + +const struct proc_ops swapfile_write_enable_fops = { + .proc_open = swapfile_write_enable_open, + .proc_read = seq_read, + .proc_lseek = seq_lseek, + .proc_release = seq_release, + .proc_write = swapfile_write_enable_write, +}; + static int __init procswaps_init(void) { proc_create("swaps", 0, NULL, &swaps_proc_ops); proc_create("workingset_restore_limit", S_IALLUGO, NULL, &workingset_restore_limit_fops); + proc_create("swapfile_write_enable", S_IALLUGO, NULL, &swapfile_write_enable_fops); return 0; }