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 D722ACD4F4C for ; Thu, 5 Sep 2024 01:08:15 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 2B8A06B00CB; Wed, 4 Sep 2024 21:08:15 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 268056B0117; Wed, 4 Sep 2024 21:08:15 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 093886B00D8; Wed, 4 Sep 2024 21:08:15 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id DB6546B00C8 for ; Wed, 4 Sep 2024 21:08:14 -0400 (EDT) Received: from smtpin29.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 78DB781894 for ; Thu, 5 Sep 2024 01:08:14 +0000 (UTC) X-FDA: 82528898508.29.BB610F4 Received: from dormouse.elm.relay.mailchannels.net (dormouse.elm.relay.mailchannels.net [23.83.212.50]) by imf20.hostedemail.com (Postfix) with ESMTP id 000741C000C for ; Thu, 5 Sep 2024 01:08:11 +0000 (UTC) Authentication-Results: imf20.hostedemail.com; dkim=pass header.d=stgolabs.net header.s=dreamhost header.b=KcjvczhZ; spf=pass (imf20.hostedemail.com: domain of dave@stgolabs.net designates 23.83.212.50 as permitted sender) smtp.mailfrom=dave@stgolabs.net; dmarc=none; arc=reject ("signature check failed: fail, {[1] = sig:mailchannels.net:reject}") ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1725498444; 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=LKY+eXNh+b8+ANsTonvdMbko2ru5DwhYm9x7uRWa5wQ=; b=Z+0uoyRutl1d7bWT6NLFNaJ2aL40ahG2MkbumZPwiCBeeFs84/R/StlMeTsE05/HbHZtLy YQ6Th+2Oxf30VOLvLSFMraNMlOkSKdkRLSbO+A3waFVrP0EUtpi4pHr6Qj4b4vTYUn9tcH HG3+5Oz46o+ht1zZt+vdIY62r2GPk18= ARC-Authentication-Results: i=2; imf20.hostedemail.com; dkim=pass header.d=stgolabs.net header.s=dreamhost header.b=KcjvczhZ; spf=pass (imf20.hostedemail.com: domain of dave@stgolabs.net designates 23.83.212.50 as permitted sender) smtp.mailfrom=dave@stgolabs.net; dmarc=none; arc=reject ("signature check failed: fail, {[1] = sig:mailchannels.net:reject}") ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1725498444; a=rsa-sha256; cv=fail; b=7tGbdLwoiFJm/Zn4H+5MnVRTA/DbgdPUsT1ESsGBc5nA6ZcK8AWZen3tnA9kFmuj6IjpYz Y1+LK8UbBePPdodwtIo+EEWopkmsoO0/3YRBcYpnbDU6CaNvYZAtKK4lW0Rh3tyz54ND3Q GdGjyN0NC/y0+XEg6Fio6N39vqP2T4s= X-Sender-Id: dreamhost|x-authsender|dave@stgolabs.net Received: from relay.mailchannels.net (localhost [127.0.0.1]) by relay.mailchannels.net (Postfix) with ESMTP id 8DF10C77BF; Thu, 5 Sep 2024 01:08:10 +0000 (UTC) Received: from pdx1-sub0-mail-a310.dreamhost.com (unknown [127.0.0.6]) (Authenticated sender: dreamhost) by relay.mailchannels.net (Postfix) with ESMTPA id 07F60C75B2; Thu, 5 Sep 2024 01:08:10 +0000 (UTC) ARC-Seal: i=1; s=arc-2022; d=mailchannels.net; t=1725498490; a=rsa-sha256; cv=none; b=I7pmC918ScggNcVYkv9qja4dn46JsAhOFZVbCgguPd3MQ3gxYJi/pTdkVLRrLGlZgSmtkv uvAQNOfkkfHUzjqwjIyHB0uDKz6WTTXNwBXDrIQI2Fl8dEh37vIPBKreZFkQvU03E7JBoV WXKXZ9MJf93RQM1uqCh80jJkbySM5PfC/TdnK+J9fYgshPsvQFEdtxCyx+k/gRNnzbgXwb Ox25qpXHOlPhtH0pbRjtG600kJG3Doq7ccXzbGK5SM8UvmLQtDBEJgaWORmORnophFbKV1 ZEDYndhhvQcBJlvdYDSP8qYQ8aLh7S7pRQBWFNhU5i0WzBewWKwSVtIupK+qtA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=mailchannels.net; s=arc-2022; t=1725498490; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references:dkim-signature; bh=9GEj4OM/a2qb4uz3i0fngIpeBJBLKnbIBwE1moCNumc=; b=xKl2G/GYHiJflz4W/uNO5aDH3R1MZWrf9TZQt9IDECi4fPA4i4JR9RRQ0zjd9fcM61l+wi P/AfUtY2CxDRVOYzoxFrytYP+WIPM/lNHZi/+FFyUH2O/sDSPZX0IeJX3BSpALqeiO8BdA zXTn/5mZkREtjLvuFNthApMKA8Qd26Q57XNzTugtH6X69isG0v3FKPy5WnmiwlLxPjySET bHoKC7sedCNkkD0Om4GO6vUPcrZ+W1V/slIXxb+L1/EbS26tf8dDoK3NCh1ptqaSJJNThr 9yOafy1a81h+83ENLF8l5gZ12wI+6u1bUfhEYldWVIGyVqFOdGxFkLeqJoKJ3w== ARC-Authentication-Results: i=1; rspamd-85dcd79db4-h6mk5; auth=pass smtp.auth=dreamhost smtp.mailfrom=dave@stgolabs.net X-Sender-Id: dreamhost|x-authsender|dave@stgolabs.net X-MC-Relay: Neutral X-MailChannels-SenderId: dreamhost|x-authsender|dave@stgolabs.net X-MailChannels-Auth-Id: dreamhost X-Attack-Print: 2eed196d76f6f3a6_1725498490397_2196151604 X-MC-Loop-Signature: 1725498490397:669959050 X-MC-Ingress-Time: 1725498490397 Received: from pdx1-sub0-mail-a310.dreamhost.com (pop.dreamhost.com [64.90.62.162]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384) by 100.125.55.150 (trex/7.0.2); Thu, 05 Sep 2024 01:08:10 +0000 Received: from offworld (ip72-199-50-187.sd.sd.cox.net [72.199.50.187]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-256) server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: dave@stgolabs.net) by pdx1-sub0-mail-a310.dreamhost.com (Postfix) with ESMTPSA id 4Wzh7F0WkrzKl; Wed, 4 Sep 2024 18:08:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=stgolabs.net; s=dreamhost; t=1725498489; bh=LKY+eXNh+b8+ANsTonvdMbko2ru5DwhYm9x7uRWa5wQ=; h=Date:From:To:Cc:Subject:Content-Type; b=KcjvczhZ97oGMqoz5+R7HitoZ5hENAKtTGSk8TsLzra/tW1uCkv1pc+9uZd6U0Cm5 weddqZBIm0d4RtygWsSxkty0zfsr1jDum4U2VYp+EOIDR9ViybThHv5LQxO1ixNn4N tKnMwuPONWU01ZTXOvzVBbpVfoz/HUvopu3/BW6hVy6njJ1VRhQR86iiBWpmVjlSR+ jxKYMd0Q2cElU+kNM3Ujs0iuVmNTPf2SYSfI7Or13XJn21ch6UCFOtzm6myWLyDQyR tpkRyUJzkBAGR+8oKtIxKxN4OhkZERWUuld8WrM6DISllJ8umdQ5rlVRDV40zqu3WF zH+codBc7GPLQ== Date: Wed, 4 Sep 2024 18:08:05 -0700 From: Davidlohr Bueso To: Andrew Morton Cc: linux-mm@kvack.org, mhocko@kernel.org, rientjes@google.com, yosryahmed@google.com, hannes@cmpxchg.org, almasrymina@google.com, roman.gushchin@linux.dev, gthelen@google.com, dseo3@uci.edu, a.manzanares@samsung.com, linux-kernel@vger.kernel.org Subject: Re: [PATCH -next] mm: introduce per-node proactive reclaim interface Message-ID: Mail-Followup-To: Andrew Morton , linux-mm@kvack.org, mhocko@kernel.org, rientjes@google.com, yosryahmed@google.com, hannes@cmpxchg.org, almasrymina@google.com, roman.gushchin@linux.dev, gthelen@google.com, dseo3@uci.edu, a.manzanares@samsung.com, linux-kernel@vger.kernel.org References: <20240904162740.1043168-1-dave@stgolabs.net> <20240904131811.234e005307f249ef07670c20@linux-foundation.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Disposition: inline In-Reply-To: <20240904131811.234e005307f249ef07670c20@linux-foundation.org> User-Agent: NeoMutt/20240425 X-Rspamd-Server: rspam03 X-Rspam-User: X-Rspamd-Queue-Id: 000741C000C X-Stat-Signature: w89688oot75qbtnyoyhsfinrk74gdj9y X-HE-Tag: 1725498491-225251 X-HE-Meta: U2FsdGVkX1+cRk3Dn0RVeRaHttQAiGq2QUD+sGkhoPB5AzVZIBzdKeAzB7QxgIE/SX4UmurPeljjtkOGzCuUkzMpWCsWu9Emp4LW2jnWYLSUjg/uvGFCQP0DANmNjtqlcYB27pPY+xbBwndnvBcdjbnxq+REPHcEmLvUm8qPRKXEIqPEWqJKuPeSC2r+nTkwhqw+Z+6UfnTf044snxhD6E/R+MS3WaQSM9ticmCbBvsqtZEtmOySLzQOrJZJhNoLJ0YDKQR5JNUAue31UCTNroOL4iJ/POw9BtwmCEeXw5mFBBfX1Tq6dSrFT5MD644al0Rg7ZCIp5w5PZlM5c4BqV3drbxpqA+TEunyYbXUIuGNKH8rec7eReFC5QWGU3PJs894DItX4ngUHrsfo/syLAHxsHrEk4XmjcZAQomMbb4AmPGgKSeMgiZlfB68XT8O9+9cv8JXOG4TVnDkHz8SEJAWvhxuaxD19TAoA8JygsS26GuoL+ImhZAcJjXWVT5YpXerJsUKakBkIPwuROO06EXazm/wI3muOXcqJMx8t+1nuZE8tCKG7N1yweYCARY6S6zWHuvFh58MGubkffR9uwLiVfzvIMiOGVL35/YLOAjhPlxUXjaOiC3HuVnJ99sFb0XqBRzyGFrh4OR1MpYYEHYYWEYO4ldgcc/H5ArW3TVf4mcTEusQEQKDVW7ceaoPkBdDF0dnJIGStYIB3WcSHC6AwlxMKr5tAeKep4KyiTorqAJVHdaEbXnUP9AB3QNrOJCLI8GINsbNHZpQEedtDSZWXI7SqOAkTg9Ho0vhC1AQjijHOwB88wMCnlxayQVSjj4WFGkH+VSdqiQlLj5c4Kn8UkhA98XneT3YD/u1e/2v9JeMfuCIFTzOObJAlpobL+79aLhs2P/2pU7m0Whg89T6zQhKDJ8Nyt2v8tKn4JW4cB5a3iX5RIv1yQc+tiO0mCzJBpy4wqQVCJRFlov 4LbxIayU OIljQt9v+JlyCIFydpUf13nirPzu1l0+122jiNyyAIAaQGcJZ/EY3Dm6UGPjOUsoKNA3VQ1/hzFPT2Kv3IIbnGBbB8g8Zx5Z9F89nSRx/0faLYH3nhLHtbxqeFFlGbS9/DCJq8gb3FIl3ReHW3Tigoi2gNJHsyswlRAE1j46bJ/yxSfF3v1visTpKkRzw4ExID9qcIpFS+LaODbjJVFBHT0SmQH5myVC7zlm8VAGXhOVs0qL2tPixnh1L7gyTkjN1JcloXc9y7AEvP35miYjxd5kTueJmB+Bg7IAI2jNDOMfLHskdWPaS+NxzahAXhM10ngtbqk4HQ9kCRwjUqLaGvQdXT2ViOynK/3yI6v9ITacyWjpJjn+XSnbBBxnx/0/ZMp5b/jzR4L2i3bbxfEOnMF4A+UTICprFqiBXIoImtbgpiuFLDvRSn6qoi7elDu+e0lIp/gSbk1FGe5Y= 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, 04 Sep 2024, Andrew Morton wrote:\n >On Wed, 4 Sep 2024 09:27:40 -0700 Davidlohr Bueso wrote: > >> This adds support for allowing proactive reclaim in general on a >> NUMA system. A per-node interface extends support for beyond a >> memcg-specific interface, respecting the current semantics of >> memory.reclaim: respecting aging LRU and not supporting >> artificially triggering eviction on nodes belonging to non-bottom >> tiers. >> >> This patch allows userspace to do: >> >> echo 512M swappiness=10 > /sys/devices/system/node/nodeX/reclaim > >One value per sysfs file is a rule. I wasn't aware of it as a rule - is this documented somewhere? I ask because I see some others are using space-separated parameters, ie: /sys/bus/usb/drivers/foo/new_id ... or colons. What would be acceptable? echo "512M:10" > ... ? >> +What: /sys/devices/system/node/nodeX/reclaim >> +Date: September 2024 >> +Contact: Linux Memory Management list >> +Description: >> + This is write-only nested-keyed file which accepts the number of > >"is a write-only". > >What does "nested keyed" mean? Will re-phrase. > >> + bytes to reclaim as well as the swappiness for this particular >> + operation. Write the amount of bytes to induce memory reclaim in >> + this node. When it completes successfully, the specified amount >> + or more memory will have been reclaimed, and -EAGAIN if less >> + bytes are reclaimed than the specified amount. > >Could be that this feature would benefit from a more expansive >treatment under Documentation/somewhere. Sure. > >> >> ... >> >> +#if defined(CONFIG_SYSFS) && defined(CONFIG_NUMA) >> + >> +enum { >> + MEMORY_RECLAIM_SWAPPINESS = 0, >> + MEMORY_RECLAIM_NULL, >> +}; >> + >> +static const match_table_t tokens = { >> + { MEMORY_RECLAIM_SWAPPINESS, "swappiness=%d"}, >> + { MEMORY_RECLAIM_NULL, NULL }, >> +}; >> + >> +static ssize_t reclaim_store(struct device *dev, >> + struct device_attribute *attr, >> + const char *buf, size_t count) >> +{ >> + int nid = dev->id; >> + gfp_t gfp_mask = GFP_KERNEL; >> + struct pglist_data *pgdat = NODE_DATA(nid); >> + unsigned long nr_to_reclaim, nr_reclaimed = 0; >> + unsigned int nr_retries = MAX_RECLAIM_RETRIES; >> + int swappiness = -1; >> + char *old_buf, *start; >> + substring_t args[MAX_OPT_ARGS]; >> + struct scan_control sc = { >> + .gfp_mask = current_gfp_context(gfp_mask), >> + .reclaim_idx = gfp_zone(gfp_mask), >> + .priority = DEF_PRIORITY, >> + .may_writepage = !laptop_mode, >> + .may_unmap = 1, >> + .may_swap = 1, >> + .proactive = 1, >> + }; >> + >> + buf = strstrip((char *)buf); >> + >> + old_buf = (char *)buf; >> + nr_to_reclaim = memparse(buf, (char **)&buf) / PAGE_SIZE; >> + if (buf == old_buf) >> + return -EINVAL; >> + >> + buf = strstrip((char *)buf); >> + >> + while ((start = strsep((char **)&buf, " ")) != NULL) { >> + if (!strlen(start)) >> + continue; >> + switch (match_token(start, tokens, args)) { >> + case MEMORY_RECLAIM_SWAPPINESS: >> + if (match_int(&args[0], &swappiness)) >> + return -EINVAL; >> + if (swappiness < MIN_SWAPPINESS || swappiness > MAX_SWAPPINESS) >> + return -EINVAL; > >Code forgot to use local `swappiness' for any purpose? Bleh, yeah sc.proactive_swappiness needs to be set here. > >> + break; >> + default: >> + return -EINVAL; >> + } >> + } >> + >> >> ... >>