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 8C435C433F5 for ; Fri, 1 Apr 2022 09:18:27 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 098658D0002; Fri, 1 Apr 2022 05:18:17 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 0211A8D0001; Fri, 1 Apr 2022 05:18:16 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id DDD8B8D0002; Fri, 1 Apr 2022 05:18:16 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0085.hostedemail.com [216.40.44.85]) by kanga.kvack.org (Postfix) with ESMTP id C86B88D0001 for ; Fri, 1 Apr 2022 05:18:16 -0400 (EDT) Received: from smtpin23.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay03.hostedemail.com (Postfix) with ESMTP id 7CAA78249980 for ; Fri, 1 Apr 2022 09:18:06 +0000 (UTC) X-FDA: 79307758572.23.F69FCDF Received: from mail-pj1-f46.google.com (mail-pj1-f46.google.com [209.85.216.46]) by imf20.hostedemail.com (Postfix) with ESMTP id 1392F1C001A for ; Fri, 1 Apr 2022 09:18:05 +0000 (UTC) Received: by mail-pj1-f46.google.com with SMTP id c15-20020a17090a8d0f00b001c9c81d9648so1976749pjo.2 for ; Fri, 01 Apr 2022 02:18:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=CcE1vZsqOC27RAHXsaotKwbu3NGWTU8/jzgbrphRdpE=; b=L+wRmwtFkpd+m0tszgzRoGykDP58MklBTX07/cJ3alDFu0VTSd1I/hq/zSMXHjhGd+ ORsn1KzqqogGVi4mEaAioTilnjtqw+9fiL/T5mhdsV7F09NJgeLoW1Pong3lb9u44HlH heu2mrTDcicJ+vo4LfufK5AN8/JHVWx4UZTgexfGuT74z4KNunHe8Z7/XU3izLZfSuhA lrUtAomJfqUQvzsXIXGjLIZxE9YtIHnpOVXrDNjcg9V3wHsMcNWLnx0N9xjIIXeb2MIW E242uqzwCdo3qulMfbGnkEpwGOgq94HkLWTJXXR5Dj/7x5mDcvtd59PD1MalZ/0jqiJz yT+w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=CcE1vZsqOC27RAHXsaotKwbu3NGWTU8/jzgbrphRdpE=; b=DEY6LwdODb4gzpe9LzvbA6F6MQ3sMdkhV0HU8A2nrPK/mM8QV+eI3NHLz25imKIqNF JmF931p9th5Uw6VHAcXryjUB2Ke1kMkgxN5adNGjtcSZjqjNmKENvaWzf2+ATNsRuce7 WCQ0V3DZMm2YL9Gzv3DHyzOKz8AqGNQGuyQPM0R7XkYwp419+Mv0rxUY5H0d1r5P6P5Y TUoNsOKG0lBq5RJbcfUL06+6IXhzwjsvIXI4GaED7eeaCS8b+QXEreL8IG6JahWij+Tw m1YLY2eRl8l3LmNzhw27Xp53QSdoeUfDNmnKC8fudwQpAo2JTijoX8X4jYaUf1lcM4+W o7Iw== X-Gm-Message-State: AOAM533qBkB8fRRuN7tAxXDw9KEsTMn7wXRkObESUqg+M77aO/bzArAN p6jkW2vhJO8UlpeBzmhpqyQCpiFRpMnwZBZtMfVfcg== X-Google-Smtp-Source: ABdhPJzIcbBBYmnkH3+FpntCyPdMrtDjlssU8PqFqE4s/EVCA8z8gJO+XVwbeP3Q/W5eRtmJH46bL1QGzljwG3Suleg= X-Received: by 2002:a17:903:2341:b0:156:196a:3ef with SMTP id c1-20020a170903234100b00156196a03efmr9330941plh.81.1648804684807; Fri, 01 Apr 2022 02:18:04 -0700 (PDT) MIME-Version: 1.0 References: <20220331084151.2600229-1-yosryahmed@google.com> <20220331173350.1fe09370479a4a6f916b477d@linux-foundation.org> In-Reply-To: From: Yosry Ahmed Date: Fri, 1 Apr 2022 02:17:28 -0700 Message-ID: Subject: Re: [PATCH resend] memcg: introduce per-memcg reclaim interface To: Wei Xu Cc: Andrew Morton , Johannes Weiner , Michal Hocko , Shakeel Butt , David Rientjes , Tejun Heo , Zefan Li , Roman Gushchin , cgroups@vger.kernel.org, linux-doc@vger.kernel.org, Linux Kernel Mailing List , Linux MM , Jonathan Corbet , Yu Zhao , Dave Hansen , Greg Thelen Content-Type: text/plain; charset="UTF-8" X-Rspamd-Server: rspam04 X-Rspamd-Queue-Id: 1392F1C001A X-Stat-Signature: 3o1znaydskkihgisyogz9g97t3tc9frs Authentication-Results: imf20.hostedemail.com; dkim=pass header.d=google.com header.s=20210112 header.b=L+wRmwtF; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf20.hostedemail.com: domain of yosryahmed@google.com designates 209.85.216.46 as permitted sender) smtp.mailfrom=yosryahmed@google.com X-Rspam-User: X-HE-Tag: 1648804685-528037 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: On Thu, Mar 31, 2022 at 8:38 PM Wei Xu wrote: > > On Thu, Mar 31, 2022 at 5:33 PM Andrew Morton wrote: > > > > On Thu, 31 Mar 2022 08:41:51 +0000 Yosry Ahmed wrote: > > > > > --- a/mm/memcontrol.c > > > +++ b/mm/memcontrol.c > > > @@ -6355,6 +6355,38 @@ static ssize_t memory_oom_group_write(struct kernfs_open_file *of, > > > return nbytes; > > > } > > > > > > +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 err; > > > + > > > + buf = strstrip(buf); > > > + err = page_counter_memparse(buf, "", &nr_to_reclaim); > > > + if (err) > > > + return err; > > > + > > > + while (nr_reclaimed < nr_to_reclaim) { > > > + unsigned long reclaimed; > > > + > > > + if (signal_pending(current)) > > > + break; > > > + > > > + reclaimed = try_to_free_mem_cgroup_pages(memcg, > > > + nr_to_reclaim - nr_reclaimed, > > > + GFP_KERNEL, true); > > > + > > > + if (!reclaimed && !nr_retries--) > > > + break; > > > + > > > + nr_reclaimed += reclaimed; > > > + } > > > > Is there any way in which this can be provoked into triggering the > > softlockup detector? > > memory.reclaim is similar to memory.high w.r.t. reclaiming memory, > except that memory.reclaim is stateless, while the kernel remembers > the state set by memory.high. So memory.reclaim should not bring in > any new risks of triggering soft lockup, if any. > > > Is it optimal to do the MAX_RECLAIM_RETRIES loop in the kernel? > > Would additional flexibility be gained by letting userspace handle > > retrying? > > I agree it is better to retry from the userspace. Thanks Andrew and Wei for looking at this. IIUC the MAX_RECLAIM_RETRIES loop was modeled after the loop in memory.high as well. Is there a reason why it should be different here?