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 06386C3DA6E for ; Thu, 4 Jan 2024 01:07:53 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 68E226B03C5; Wed, 3 Jan 2024 20:07:53 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 6650A6B03C6; Wed, 3 Jan 2024 20:07:53 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 52CBE6B03C8; Wed, 3 Jan 2024 20:07:53 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id 43A2F6B03C5 for ; Wed, 3 Jan 2024 20:07:53 -0500 (EST) Received: from smtpin03.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id EE78612035C for ; Thu, 4 Jan 2024 01:07:52 +0000 (UTC) X-FDA: 81639841584.03.7A2F7EA Received: from mail-il1-f178.google.com (mail-il1-f178.google.com [209.85.166.178]) by imf05.hostedemail.com (Postfix) with ESMTP id 3239A100013 for ; Thu, 4 Jan 2024 01:07:51 +0000 (UTC) Authentication-Results: imf05.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=S7sCfgBf; spf=pass (imf05.hostedemail.com: domain of yuzhao@google.com designates 209.85.166.178 as permitted sender) smtp.mailfrom=yuzhao@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=1704330471; 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-type:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=7m+H9c4RKS2/XKxU5xixK4qV5pHJenGZp2+iHHRxZ8I=; b=E2x8wbBfB+eNViRlHStghXNH2nJDNucOGT0fX6Ml27yaor16Sck3XwyGewThrmo2aM2BQo nDk9Icsl4MORCJS7skE/7yEQnitLSeh440GZ+FSCJOLPjoB0Wa63dwoHoO+NzjA5WKibka ajVpBTVflVtE+Y7YPFwR5Boo0BSWjEE= ARC-Authentication-Results: i=1; imf05.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=S7sCfgBf; spf=pass (imf05.hostedemail.com: domain of yuzhao@google.com designates 209.85.166.178 as permitted sender) smtp.mailfrom=yuzhao@google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1704330471; a=rsa-sha256; cv=none; b=3ML10EEsBHIqw/EcMO6TEmgWDmWX0j0Q2TnDblBLv0ytOqYlF7vA/pmIeVUQpcOpoUsuTD vHsrYWqU0hbSDVrISH8M61F8cnrxO+Bf82luZYp40PAAyloVn8uX8Q+RhD+eSUcKLjjde0 gRaDL3JQdd6a6Gdw26IbmaiUM0gzdLc= Received: by mail-il1-f178.google.com with SMTP id e9e14a558f8ab-36000a26f8aso45475ab.0 for ; Wed, 03 Jan 2024 17:07:50 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1704330470; x=1704935270; darn=kvack.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=7m+H9c4RKS2/XKxU5xixK4qV5pHJenGZp2+iHHRxZ8I=; b=S7sCfgBfHWo9vPDXAhroElXnVh3PqoD9ydRvkqskOWrnCAak1MvDtPlcsrX3jJ6vMw RCUM08ZzbEteVri5ojmWvQHZ3Vmi3cjbFpJB0BpXbuOOVuyyMROk2YDPQZWmF/fd5OHp q/QxJKeQU7fA0tj84LmP3Zfv3Km4Lo0kqCHg3OcEsWkS2E7P6315G5p9e0LVSWi3R3Sa tNkdA9EsNjJvQh+A3KEsjenFtoWfxgkFMd1ayNx+kPcPwipts0Oq82fVxcV45ZKTEXEx EG66+YJIG461kn63w8DoqkQp5nXo4zx0RPYl/aWa7Ixln+pBifGHrccCa/LfiXDHuDNg O08A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1704330470; x=1704935270; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=7m+H9c4RKS2/XKxU5xixK4qV5pHJenGZp2+iHHRxZ8I=; b=oLQ53okzQ2k8/7ONZ6t+6ev3dDx1a/VC1rNXVy06+OljHTmPDJBRZ/gLRMG3vNOEv/ DDgXTFIHkvIgBVtBi+eMhwRgj65eDjX1JZH5NGssYLrYjIzFBGYunGzqWS6fCguQRPwD s2dL9oP7Q5h9Q+L1FkBxd6b3YjiD2c/cT09yre1Dg7vHBLxcZWTHryDgP5D8TW0C5Til xCiWajZbz8LQChLkHLZl0k70RiRuJeMCFQ2iqtnhMpfEUsnVAATsD+sMsD/5ihYuwQQR tdh0KqOf1cDbZsCotuatkyNnulSUp3HEvSHxJRNVtXfPfaACC9BbNxfi1LH/wgQggSWw 4tIQ== X-Gm-Message-State: AOJu0YwHf43cuBTbTNX3A+uFCpgnpaJZCeFdtnFw/13r9LRsQ6qOCgsa 4Cv3bxn30OaqA3ma06V7aQGE0Q63UM89 X-Google-Smtp-Source: AGHT+IGRuUGkfMLL656tWkrl3gVsRL5YUSK9Aa3dv2YOfuY5Fqt+InY0LH5LQvbxFNvicz1QowE59g== X-Received: by 2002:a92:cccf:0:b0:360:495:20e9 with SMTP id u15-20020a92cccf000000b00360049520e9mr302785ilq.8.1704330470029; Wed, 03 Jan 2024 17:07:50 -0800 (PST) Received: from google.com ([100.64.188.49]) by smtp.gmail.com with ESMTPSA id k11-20020a02cccb000000b0046ddbd7b67fsm760485jaq.93.2024.01.03.17.07.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 03 Jan 2024 17:07:49 -0800 (PST) Date: Wed, 3 Jan 2024 18:07:43 -0700 From: Yu Zhao To: Dan Schatzberg Cc: Andrew Morton , linux-kernel@vger.kernel.org, cgroups@vger.kernel.org, linux-mm@kvack.org, Yosry Ahmed , Michal Hocko , David Rientjes , Chris Li , Tejun Heo , Zefan Li , Johannes Weiner , Jonathan Corbet , Michal Hocko , Roman Gushchin , Shakeel Butt , Muchun Song , David Hildenbrand , Matthew Wilcox , Kefeng Wang , Yue Zhao , Hugh Dickins Subject: Re: [PATCH v6 2/2] mm: add swapiness= arg to memory.reclaim Message-ID: References: <20240103164841.2800183-1-schatzberg.dan@gmail.com> <20240103164841.2800183-3-schatzberg.dan@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-Rspamd-Queue-Id: 3239A100013 X-Rspam-User: X-Stat-Signature: b6ei8acot8b93ibcyw4s96p6wrmfqa7t X-Rspamd-Server: rspam01 X-HE-Tag: 1704330471-117187 X-HE-Meta: U2FsdGVkX1+2TcYedvlnr0UwHEMw/HZ0hJJkG1zsrjlYJuV9M9Ll2DRWpk8AVvSD62JmpGthLv9x84rnT0qZ8aEso0wMtzyXlcSAFJ4kdorypxUFm5zMIvAliNzLdUyOXMwK8iXy++vf/wiWnatW4gPVLD6zQBN4pfYhuZRq3JgjIIcbMMgEH9KlM182+pThaq1vNycziHykJmVxV8kYLBRUpCHWyOiA1JEjOZ4K83MSQrZ8958Pr/qodfLOxFqCDY0o0zEzQXyKjN2AzXTgFthK5OGi7HhZdkS47TPMvsY6G0ND6gODSKHcJWS7AUHyhdR1536Z479+0tOfF9JJ5krX9EZMFoemYLoyVyGbaLn2rV67h5anTCUvXtOztYN93A+aB5FXBQJUIfRVv2hERTPKAUUgM2pY3lvMqUZ7rR0Cu2Ifo37bDiMND6Of7+nI4U8wYqvEbx6uwK/EQnOMQfQGR8lQk8NiP5ZyexlD/pXBjtZ6zya2y4imdO+h8TSFLbTHoq8ANVo3NP1AVGeQHRfsTbHk8bUF2XE5A185iGD/l+KOrsmFbyzPp4uLwLJeKYjuU3EeXbgYqNuqMa9S6sw6hAN+hcvmsGF0OHxae+OnWuYdqQPn9qIITkOONnLUVnnolMMvAX5mJcP57CR0Jb5k7qpe4aq48lsUQB4lnjIS0GEqig6u4Bonc775tGeLuH15CE7hHbG54qGDsVvMAIltDNnJsRyloEOr3D70QZJeXVwrG/PjxXTW/UtznLY5CSzPwJKCQ1uYpLgWvmd7aE8F8zkXZvFDrouJmB0fOrMGTGiLmh1yJfIrk2v8Msyd6R4e0SMSg8oR6Y9+crinI/1RtGjvj2eL2NdCcGabBORtLtNMCmwEam1DKs2+AHR/XaffnXSxlpudVu1K99uPRn7j5FJErb5QmJFN74RoJXGX+3bAbYs52SXYEmV96+O78hqH7mj3Q4N1tPQ72B7 ADYASQlG bdwbFRjvtqw/tOjq9wRKJHPFbJS9UofueKatvqzu8jncnfKI6w50hBkZVJjIdMCYspreTaDsVd3CEwRmjT3g1A88rtyl1uAAUTbjybiBaAQ1BdlOKwqLeynxSF3dGSgMi9tBVXEOj4VvhfEDSRkMWPdyUgNsnoU1C2POTqrPdk09lbHRROGZTA+NR7cqU8utbIba19yL9O1tWFRAIGKwmDoV62sjo1Mqc4FA2itRAopP+P05AFwvAzvbfN3uOqoHya91KZkSfMoI9XaiqlzZYZsTPAS4YBhxTyEPwx4joNZ/sKBE6hBqfwGQ+/+Bl5dBWRGVSFUFgBkX6ETFf2h4+okhqUepOSvzK3GTKzyNvpEIibLTEk81Ocl6gLbg0HEul+pzCtTLT00uKHFsSkryMl41mVGEd3+GnPB5m0u+OP3SpYWOVJCHN2QFqJPwaXOYIXjs3n460Szfpugg= 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: On Wed, Jan 03, 2024 at 01:19:59PM -0500, Dan Schatzberg wrote: > On Wed, Jan 03, 2024 at 10:19:40AM -0700, Yu Zhao wrote: > [...] > > > diff --git a/mm/vmscan.c b/mm/vmscan.c > > > index d91963e2d47f..394e0dd46b2e 100644 > > > --- a/mm/vmscan.c > > > +++ b/mm/vmscan.c > > > @@ -92,6 +92,11 @@ struct scan_control { > > > unsigned long anon_cost; > > > unsigned long file_cost; > > > > > > +#ifdef CONFIG_MEMCG > > > + /* Swappiness value for proactive reclaim. Always use sc_swappiness()! */ > > > + int *proactive_swappiness; > > > +#endif > > > > Why is proactive_swappiness still a pointer? The whole point of the > > previous conversation is that sc->proactive can tell whether > > sc->swappiness is valid or not, and that's less awkward than using a > > pointer. > > It's the same reason as before - zero initialization ensures that the > pointer is NULL which tells us if it's valid or not. Proactive reclaim > might not set swappiness and you need to distinguish swappiness of 0 > and not-set. See this discussion with Michal: > > https://lore.kernel.org/linux-mm/ZZUizpTWOt3gNeqR@tiehlicka/ static ssize_t memory_reclaim(struct kernfs_open_file *of, char *buf, size_t nbytes, loff_t off) { struct mem_cgroup *memcg = mem_cgroup_from_css(of_css(of)); unsigned int nr_retries = MAX_RECLAIM_RETRIES; unsigned long nr_to_reclaim, nr_reclaimed = 0; + int swappiness = -1; ... reclaimed = try_to_free_mem_cgroup_pages(memcg, min(nr_to_reclaim - nr_reclaimed, SWAP_CLUSTER_MAX), - GFP_KERNEL, reclaim_options); + GFP_KERNEL, reclaim_options, + swappiness); ... +static int sc_swappiness(struct scan_control *sc, struct mem_cgroup *memcg) +{ + return sc->proactive && sc->proactive_swappiness > -1 ? + sc->proactive_swappiness : mem_cgroup_swappiness(memcg); +}