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 46AA1C433F5 for ; Thu, 13 Jan 2022 09:43:46 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 57C666B00A2; Thu, 13 Jan 2022 04:43:45 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 52BF46B00A3; Thu, 13 Jan 2022 04:43:45 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 3CC686B00A4; Thu, 13 Jan 2022 04:43:45 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0055.hostedemail.com [216.40.44.55]) by kanga.kvack.org (Postfix) with ESMTP id 293546B00A2 for ; Thu, 13 Jan 2022 04:43:45 -0500 (EST) Received: from smtpin20.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay02.hostedemail.com (Postfix) with ESMTP id C242595197 for ; Thu, 13 Jan 2022 09:43:44 +0000 (UTC) X-FDA: 79024776768.20.7626F00 Received: from mail-il1-f182.google.com (mail-il1-f182.google.com [209.85.166.182]) by imf01.hostedemail.com (Postfix) with ESMTP id 6F2CB40003 for ; Thu, 13 Jan 2022 09:43:44 +0000 (UTC) Received: by mail-il1-f182.google.com with SMTP id e8so5114786ilm.13 for ; Thu, 13 Jan 2022 01:43:44 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to; bh=jGQBCbp3VTht0s83RWyoZNzI0eJghJWEzndcXZrspMo=; b=dOiEoYZZR5+Vh4TZtqnlnz56IlRAJIIf5ZM2uTXDW3TzSIcBai32MZCE/+RFY08zLL +vvE5O7Tk9L9KpvnioUjlxjBHvZnjZwFZ34lf5soHkEX7k6/ycviXBJNvZdKadpjfYCX COxH2uvQ9SgBj2be8KndYGJuP24P1k2gltNuwZ+Sq7HPEWf3rFft9n1D9MzwTIaj5v/E UsYcsv0qN79TMVriH6W9dSjaxNh+Orx8ylV2Z9q/JRC1Dd+PLrKvyDIcrFlH3/IG2kR9 aotv0MTUFdp82kuTRyf8S01UkXLYauad7zxiSUBLwBD7Dp5fCcr7jxcELJ1QZ3Q303Dl LWEg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to; bh=jGQBCbp3VTht0s83RWyoZNzI0eJghJWEzndcXZrspMo=; b=pWqBdqVfCePoIqlfCl8yACjANj/tbozNVYCGSwIh99jZGGntPy+dNQ+7NM/hXP64+B 1MbuRj7DtObuXluA+QhJNHfNNDTTnCFrz2ZAHB7B/Pew7aT9RLn8JFpK2hbIT+UQoNsf 4KLGMuCxGavu5fSju8oZnkVdt1Cs08FC+FyqpqmNZ8DYzT/Q1Y5ZopQuhemtypIk8yTF FAIBlOpi4m3Q9kB6rcFjkT0DzLL0gV0Lrg9Jy3lC9aFZUCKEyO0ZrE5+0+BNx+aylyPg CzvZqe8d8Wk1Hhkky7LOHRR1qh0EY5gMY1ihl+snyUjxh0rLv7fqQwcP4ViEvsN3GFeQ ARJg== X-Gm-Message-State: AOAM530wlkadhroifZnql6S2SG+4+bW5dUXiWT41eUfG8JvVCiBxPfvr sSK/Xpu4JE1gDK0hYcL4yVC/fw== X-Google-Smtp-Source: ABdhPJzaVVIjiSChWOEW5dyFzP9OPOrAjE5fTqnll9HOb/39p3QyrdWz9y9wBYeFXpIkoCBSkTMAww== X-Received: by 2002:a92:c7c6:: with SMTP id g6mr2001597ilk.318.1642067023414; Thu, 13 Jan 2022 01:43:43 -0800 (PST) Received: from google.com ([2620:15c:183:200:ac2b:c4ef:2b56:374c]) by smtp.gmail.com with ESMTPSA id r9sm1957174ilh.80.2022.01.13.01.43.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 13 Jan 2022 01:43:42 -0800 (PST) Date: Thu, 13 Jan 2022 02:43:38 -0700 From: Yu Zhao To: Michal Hocko Cc: Andrew Morton , Linus Torvalds , Andi Kleen , Catalin Marinas , Dave Hansen , Hillf Danton , Jens Axboe , Jesse Barnes , Johannes Weiner , Jonathan Corbet , Matthew Wilcox , Mel Gorman , Michael Larabel , Rik van Riel , Vlastimil Babka , Will Deacon , Ying Huang , linux-arm-kernel@lists.infradead.org, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, page-reclaim@google.com, x86@kernel.org, Konstantin Kharlamov Subject: Re: [PATCH v6 6/9] mm: multigenerational lru: aging Message-ID: References: <20220104202227.2903605-1-yuzhao@google.com> <20220104202227.2903605-7-yuzhao@google.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-Rspamd-Server: rspam11 X-Rspamd-Queue-Id: 6F2CB40003 X-Stat-Signature: jo5gj6jc1eg1iudzj3gy7sozgjpqykcb Authentication-Results: imf01.hostedemail.com; dkim=pass header.d=google.com header.s=20210112 header.b=dOiEoYZZ; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf01.hostedemail.com: domain of yuzhao@google.com designates 209.85.166.182 as permitted sender) smtp.mailfrom=yuzhao@google.com X-HE-Tag: 1642067024-823054 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 Mon, Jan 10, 2022 at 03:37:28PM +0100, Michal Hocko wrote: > On Sun 09-01-22 20:58:02, Yu Zhao wrote: > > On Fri, Jan 07, 2022 at 10:00:31AM +0100, Michal Hocko wrote: > > > On Fri 07-01-22 09:55:09, Michal Hocko wrote: > > > [...] > > > > > In this case, lru_gen_mm_walk is small (160 bytes); it's per direct > > > > > reclaimer; and direct reclaimers rarely come here, i.e., only when > > > > > kswapd can't keep up in terms of the aging, which is similar to the > > > > > condition where the inactive list is empty for the active/inactive > > > > > lru. > > > > > > > > Well, this is not a strong argument to be honest. Kswapd being stuck > > > > and the majority of the reclaim being done in the direct reclaim > > > > context is a situation I have seen many many times. > > > > > > Also do not forget that memcg reclaim is effectivelly only direct > > > reclaim. Not that the memcg reclaim indicates a global memory shortage > > > but it can add up and race with the global reclaim as well. > > > > I don't dispute any of the above, and I probably don't like this code > > more than you do. > > > > But let's not forget the purposes of PF_MEMALLOC, besides preventing > > recursive reclaims, include letting reclaim dip into reserves so that > > it can make more free memory. So I think it's acceptable if the > > following conditions are met: > > 1. The allocation size is small. > > 2. The number of allocations is bounded. > > 3. Its failure doesn't stall reclaim. > > And it'd be nice if > > 4. The allocation happens rarely, e.g., slow path only. > > I would add > 0. The allocation should be done only if absolutely _necessary_. > > Please keep in mind that whatever you allocate from that context will be > consuming a very precious memory reserves which are shared with other > components of the system. Even worse these can go all the way to > depleting memory completely where other things can fall apart. I agree but I also see a distinction: 1,2,3 are objective; 0,4 are subjective. For some users, page reclaim itself could be not absolutely necessary because they are okay with OOM kills. But for others, the situation could be reversed. > > The code in question meets all of them. > > > > 1. This allocation is 160 bytes. > > 2. It's bounded by the number of page table walkers which, in the > > worst, is same as the number of mm_struct's. > > 3. Most importantly, its failure doesn't stall the aging. The aging > > will fallback to the rmap-based function lru_gen_look_around(). > > But this function only gathers the accessed bit from at most 64 > > PTEs, meaning it's less efficient (retains ~80% performance gains). > > 4. This allocation is rare, i.e., only when the aging is required, > > which is similar to the low inactive case for the active/inactive > > lru. > > I think this fallback behavior deserves much more detailed explanation > in changelogs. Will do. > > The bottom line is I can try various optimizations, e.g., preallocate > > a few buffers for a limited number of page walkers and if this number > > has been reached, fallback to the rmap-based function. But I have yet > > to see evidence that calls for additional complexity. > > I would disagree here. This is not an optimization. You should be > avoiding allocations from the memory reclaim because any allocation just > add a runtime behavior complexity and potential corner cases. Would __GFP_NOMEMALLOC address your concern? It prevents allocations from accessing the reserves even under PF_MEMALLOC.