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 A7CEBC4332F for ; Tue, 12 Dec 2023 21:43:55 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 3BFAE8D0001; Tue, 12 Dec 2023 16:43:55 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 36F246B019D; Tue, 12 Dec 2023 16:43:55 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 1C2228D0001; Tue, 12 Dec 2023 16:43:55 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id 0C5FC6B00E2 for ; Tue, 12 Dec 2023 16:43:55 -0500 (EST) Received: from smtpin19.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id CC0CD40AAC for ; Tue, 12 Dec 2023 21:43:54 +0000 (UTC) X-FDA: 81559493988.19.0F61EE6 Received: from mail-pj1-f49.google.com (mail-pj1-f49.google.com [209.85.216.49]) by imf02.hostedemail.com (Postfix) with ESMTP id E8B7280034 for ; Tue, 12 Dec 2023 21:43:52 +0000 (UTC) Authentication-Results: imf02.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=jREVH+K0; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf02.hostedemail.com: domain of schatzberg.dan@gmail.com designates 209.85.216.49 as permitted sender) smtp.mailfrom=schatzberg.dan@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1702417433; 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:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=NYFGcvpC2a9QSpzB8tRAV/ZTOG8iYLcCMIlAxh09bmk=; b=OR0MBAw0v2UQpsZFxbU51PY5fmu8pEbuJN1aJPEWCCgFGLU526PcxgSpBO+1eqpAb1k3L2 NWdIQN3yaqpicBGsOwbcLIsi+swvqY6YG/LJYLphKgub6qyEPe7YRJaT04FGTr8M6zjSyB nHfDAEPaYJoMRCHc92ykgtGTPpSpkbw= ARC-Authentication-Results: i=1; imf02.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=jREVH+K0; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf02.hostedemail.com: domain of schatzberg.dan@gmail.com designates 209.85.216.49 as permitted sender) smtp.mailfrom=schatzberg.dan@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1702417433; a=rsa-sha256; cv=none; b=Wi8XqwTm4zIEfXJUKPAwvIjXmzQyC3B4+0t5vYh7kV4qJYzhM0BcYMOt/K6mA7gkh2F6xu 0qmYiHhkGeuhY8CzeBrWqvy50go4sMYjPcIhta8doyWjct2YKAQHpw5o+9oJkAMxibtxym m4kEPgkVkmfHN+xKAMSPHq+qINSYn6s= Received: by mail-pj1-f49.google.com with SMTP id 98e67ed59e1d1-28ac11407cfso656341a91.1 for ; Tue, 12 Dec 2023 13:43:52 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1702417432; x=1703022232; darn=kvack.org; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:from:to :cc:subject:date:message-id:reply-to; bh=NYFGcvpC2a9QSpzB8tRAV/ZTOG8iYLcCMIlAxh09bmk=; b=jREVH+K07iTr382QHe9bE4y8vqLxSlE487GDe6wVRl3hh4d6axRPds3vkuyFjkrI8n JGPIGznVgKmlMVG+BBB+p3FbisQH6WYQET6NWwlDMLdB0pOtHQdHDqbVtCpsKr3T1tJn CQbW3/S2+MC5Cs28eQEpIXEFZtbxFkR+j90go4FmjO01AsImWNoemVfSlxI/AFpp6R1+ 0V5KR6O6SKxcF+bPHBegLDsq/dQ421IEk3le6eZ8U9y3+fa5B5VHdISBLFNTmh71dHD+ HrR3HCogNLPGVuBOhw4s66DbakjDmBEYwtWv2HqctkDglMHMFD1ZaBhkD1pwMhSIfAy7 zgCQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1702417432; x=1703022232; h=in-reply-to:content-transfer-encoding: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=NYFGcvpC2a9QSpzB8tRAV/ZTOG8iYLcCMIlAxh09bmk=; b=ouO6ymz5DuXBTC074Ad/E2T2w/paG9FS4yP7zMH36bhd4EygBGL/2VxdNzLYJg2Wzc pY8Wl92d3k3Zorkug6PHF+6On0jdaNKA7hhRfHwoW/7Iqk5fyVZZY1BWL5UljkyjOIy4 Tj7be5yysfGM41nv13Yu8qRTN0ZjwsPM8zDJNkYmj2wBGxOsudboqIeIDzAT2qI0PRtQ tyeK5YD0esTPOQlESouVngs3/SLSaAu6t3npO8ytgSbcsP5wbHid0d8Vco8WFfJW5wNW Uw0frZOBkBxLO3ShvNyt5Q9sOwGmQgmkMCWpiIY1h0sZhMUnX6/C+atloXRi7coOGEd/ hiZg== X-Gm-Message-State: AOJu0YwvbFrw19vXpD9M/rSB8JLiNn9QgcNs8Fmv+0JYfRUNvTm2/aRB 3Y+/oiz0cQQn/QaHiRozdd8= X-Google-Smtp-Source: AGHT+IEDWWFSu/2HO7omc9rG7/wpgLn5lEP9tPOE8jeGHF9ecMnMo2w9mQ+i6UiCvYTNQM2v7hVLxA== X-Received: by 2002:a17:902:ab45:b0:1d3:46f6:8046 with SMTP id ij5-20020a170902ab4500b001d346f68046mr743839plb.27.1702417431594; Tue, 12 Dec 2023 13:43:51 -0800 (PST) Received: from dschatzberg-fedora-PF3DHTBV ([2620:10d:c090:500::5:671e]) by smtp.gmail.com with ESMTPSA id i11-20020a17090332cb00b001d0ab572458sm9024911plr.121.2023.12.12.13.43.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 12 Dec 2023 13:43:51 -0800 (PST) Date: Tue, 12 Dec 2023 16:43:48 -0500 From: Dan Schatzberg To: Chris Li Cc: Johannes Weiner , Roman Gushchin , Yosry Ahmed , Huan Yang , linux-kernel@vger.kernel.org, cgroups@vger.kernel.org, linux-mm@kvack.org, Tejun Heo , Zefan Li , Jonathan Corbet , Michal Hocko , Shakeel Butt , Muchun Song , Andrew Morton , David Hildenbrand , Matthew Wilcox , Kefeng Wang , "Vishal Moola (Oracle)" , Yue Zhao , Hugh Dickins Subject: Re: [PATCH V3 1/1] mm: add swapiness= arg to memory.reclaim Message-ID: References: <20231211140419.1298178-1-schatzberg.dan@gmail.com> <20231211140419.1298178-2-schatzberg.dan@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: X-Rspamd-Queue-Id: E8B7280034 X-Rspam-User: X-Rspamd-Server: rspam05 X-Stat-Signature: 6ny6kyxxgxjhjxgy5fqmsf6qbhxaahtj X-HE-Tag: 1702417432-521441 X-HE-Meta: U2FsdGVkX1/6UwFAAt1NrzrlXZJpoLLx8i1qcnk60XlpiggD3paxDPQi+PJpyLE4olXMBpBnpBVAFyxSNgpaefpoU0QcZcsVuMG4Qcs612jdTeHLhSz+1IALFssAnFQvy59OGf3sF0PGet6Xxmf/hZIfNnVoNrCi0OXUB+VXZcJjhyMH5fDDayvRPbIiJaSNBV/514SAKFdOFcTRAblUENx7idwMhhYGZIizo5tNvZsZ4tIPAiKIoRa4upV7Ql0rpDsdcXAAuNonuwUlPhKu9x7jJjd0IsP3GkXVBl3OdwTW2EmetImxBshYKQSU7meHVO9UA2gnRSUv+iNo9DkmG3jN5RCYdT84DKIujzRXpg3iQm3acWOb0xCzqNBKH+g5BnGsii8rTCgKIB1XHFDzepwhR1R89/weNth+ca8Qw7jz7aubaNFyRrtZzxgBnAzI0Y32luYUZmX5q5+Lju/deLeE4/xW64liQxdvRQw5b5m9ZT5ytf3DGExbryQvwS15o2IgV5TrDWJisRGcWdQye+/9stORiaytRmvQ1mQBzbvOHBw7ZrXOTP+ug6IppShwuYEw1I4Q3ds2A5D8XOOgzPNT+XFszOPte3Zz647qoxknXJJyWFGjafmOg/IewhsEW4YGgq+fsbb8hkEnPaBVqhA+YG3jfQwnxWELtwW9zGYYw6KvHEJaeyo6mXiKJ0EDdxteea6DhfhRQkSy8PNkk6/USy78J3/btGNflyaIdRf426OeDP9WMem2rS5itPSxo6esIhWB1IQvTEvUVuf7e2z/4A8dC/rQGtwGNsWXFSX6yj2TA4XganC1EswzxlAlKmeBA5hxguxDmyaCw+AjlAgdmwRr5os4H15eYA8GD2RyJ6rJr6eZdJbP0aIM/YoU79oDs47MWH5USgaE5TLsrJPh8QkA3JB0RljakqH0p3USPGQ/a7hDhBmet6zAWxhP0XmWk9Fi2xPbAw64gbi vJWsxdD0 VZ2zINDecPZR8OMf1o+CzsZvZSPHPAygW9A7SdlU1nD9KzLhJ4YD2W6QSIl0UglEHKG+YiRAq/w+vAABbTICtYafnjDmSXZpZrxua4190rMa7Pzq7kwqNgm/F0gLInG8jmVRRKntK0i9q1LGx7wSm/At6OCLQ9yu1t291P9XlR7tYNuWGbqOqxIHeC7LBw/WWXBN0K2Fsc5AhyALNB9Ftj+CEU6YhzzAAqBzS8VtsTgRVpYxDQZgc4LutOLH/Q5kbYcfTZnQdKsz6e00LsbxGGLr+5HgxoJ+aP/wC5eoVA2zJnTGDsL/zqcXgirWUrZOb9bm3jA4tYzO+YaDnePbJrDM0YX2VER5UWGpAbXBoEmZj37zHnRrysqjtOwA+OE8Ai2W0HFn5RWE+uAg8exe6DnZtgrFNMnfif9akvmDfZ2sNVW5ti3m7PJZygi86P4/Aru01AVKPoInQv8/8//KM0CN42EGTF69+mlP6Tzk9R4URzJQLbiqgPQLsYUNuvGNcB4f+Q7QfBJp73eQTEc6er/01oLtdY4g8jOeln8bHZTzWDM9PvEA126QXwkFRRYl5qZpQ 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 Mon, Dec 11, 2023 at 05:06:54PM -0800, Chris Li wrote: > Hi Dan, > > Thank you for the patch. > > On Mon, Dec 11, 2023 at 6:04 AM Dan Schatzberg wrote: > > > > Allow proactive reclaimers to submit an additional swappiness= > > argument to memory.reclaim. This overrides the global or per-memcg > > swappiness setting for that reclaim attempt. > > I am curious what prompted you to develop this patch. I understand > what this patch does, just want to know more of your background story > why this is needed. I wrote about this in some detail in the cover letter (0/1). Take a look and let me know if the rationale is still unclear. > Instead of passing -1, maybe we can use mem_cgroup_swappiness(memcg); > Yeah this makes sense, I'll go ahead and make that change and eliminate the -1. > > nr_reclaims--; > > continue; > > } > > @@ -6895,6 +6896,16 @@ static ssize_t memory_oom_group_write(struct kernfs_open_file *of, > > return nbytes; > > } > > > > +enum { > > + MEMORY_RECLAIM_SWAPPINESS = 0, > > + MEMORY_RECLAIM_NULL, > > +}; > > + > > +static const match_table_t if_tokens = { > > What this is called "if_tokens"? I am trying to figure out what "if" refers to. I used the same logic as in "mm: Add nodes= arg to memory.reclaim". I can just call it tokens. > > > + { MEMORY_RECLAIM_SWAPPINESS, "swappiness=%d"}, > > + { MEMORY_RECLAIM_NULL, NULL }, > > +}; > > + > > Do we foresee a lot of tunable for the try to free page? I see. You > want to use match_token() to do the keyword parsing. See below > > > static ssize_t memory_reclaim(struct kernfs_open_file *of, char *buf, > > size_t nbytes, loff_t off) > > { > > @@ -6902,12 +6913,33 @@ static ssize_t memory_reclaim(struct kernfs_open_file *of, char *buf, > > unsigned int nr_retries = MAX_RECLAIM_RETRIES; > > unsigned long nr_to_reclaim, nr_reclaimed = 0; > > unsigned int reclaim_options; > > - int err; > > + char *old_buf, *start; > > + substring_t args[MAX_OPT_ARGS]; > > + int swappiness = -1; > > > > buf = strstrip(buf); > > - err = page_counter_memparse(buf, "", &nr_to_reclaim); > > - if (err) > > - return err; > > + > > + old_buf = buf; > > + nr_to_reclaim = memparse(buf, &buf) / PAGE_SIZE; > > + if (buf == old_buf) > > + return -EINVAL; > > + > > + buf = strstrip(buf); > > + > > + while ((start = strsep(&buf, " ")) != NULL) { > > + if (!strlen(start)) > > + continue; > > + switch (match_token(start, if_tokens, args)) { > > + case MEMORY_RECLAIM_SWAPPINESS: > > + if (match_int(&args[0], &swappiness)) > > + return -EINVAL; > > + if (swappiness < 0 || swappiness > 200) > > Agree with Yosry on the 200 magic value. > > I am also wondering if there is an easier way to just parse one > keyword. Will using strcmp("swappiness=") be a bad idea? I haven't > tried it myself though. As above, "mm: Add nodes= arg to memory.reclaim" was previously in the mm tree doing it this way, so I duplicated it. I think given that there have been lots of discussions about extending this interface, this match table has some potential future value and I don't see a major downside to using it in favor of strcmp.