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 38F0AC433F5 for ; Sat, 19 Mar 2022 11:15:13 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 8F7728D0002; Sat, 19 Mar 2022 07:15:12 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 8A4DF8D0001; Sat, 19 Mar 2022 07:15:12 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 76CD78D0002; Sat, 19 Mar 2022 07:15:12 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (relay.a.hostedemail.com [64.99.140.24]) by kanga.kvack.org (Postfix) with ESMTP id 686AF8D0001 for ; Sat, 19 Mar 2022 07:15:12 -0400 (EDT) Received: from smtpin05.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 3A7C520934 for ; Sat, 19 Mar 2022 11:15:12 +0000 (UTC) X-FDA: 79260879264.05.5D06021 Received: from mail-yb1-f175.google.com (mail-yb1-f175.google.com [209.85.219.175]) by imf15.hostedemail.com (Postfix) with ESMTP id B4A12A0029 for ; Sat, 19 Mar 2022 11:15:11 +0000 (UTC) Received: by mail-yb1-f175.google.com with SMTP id v35so20021979ybi.10 for ; Sat, 19 Mar 2022 04:15:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=JmpfHS1P+qpaVI9DLkTFbIW8LYRa15RLKPALOZCQDKk=; b=U2lczM+Kei/H8pl07DdkRF/zKfwtoBL7jGf/hZk6ujcHWCiCiUIOg+g+eqUv5YMNQU sE3SJxo82a1CAdrGtGIK1WNfH3hgGzJqW8l95OP68GFDbkjIdaflEC3/VyslJacg938Y fw7vv4WJg2Ze898KPgW406xg16quHSMDJJjeLfZ+AGBs3P6EMcHWK5J2cUq2lp9TMVdq rISsYg+8UBpFBVKu7YUjca2eIgncLRWlnFqpjku7saZ8H1MFWO9yRbvTUSfKMwCLDwQC 5qwjcxH6Wup0k1IrYotTOjMWuMAltNeGrnfEp6KI8jacb1kxnjx89ji/U5KmkKDbe7oJ 5rxg== 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=JmpfHS1P+qpaVI9DLkTFbIW8LYRa15RLKPALOZCQDKk=; b=255a87qKVTOUByhZESLEYUQyrcOUhOzuV7t/m0DS7tBzf09Rayq2EuaMF4q9hW2uZq 0vtYPLIwZDo6vfuPn7jzHMNh7NIl19IalT7aovS1red+azasYPDx70T5Holu54yn7pjN JeZCFniTQ+/sEMV/ZItqOtm7CerWihBS+tapET/+HiYEDExqamwUJFEgk3aYkoCBKdjK kRP8Re152wPGgBAqASsroPHGI8ba8wQWh7kMq1+fxZFotpqPjiK5HZHaC6pxT9hy1wn+ k++HPKncKRMVzxUNNPgZnHoTQ1QDxVl9Zku3zrB9ETcndfx7se8Mm+nIqTfeYwRc4Lg/ ur6g== X-Gm-Message-State: AOAM533tMYl8yBHE7+v/wUy9ux+uDuSYH2qoxqua6tOqyjqjubWsj4HF xlWvS4NUvD7TVtiwjn19hnMiW9Rr/BgVQ+s6aNs= X-Google-Smtp-Source: ABdhPJxlHmYPruUoNqz/mzX0ofnX1IhGKWK+gllmONTx2BCLV1p3PSGIbJQ6vwLyx55cqi63NW1jMmc+uZUxWKWHiII= X-Received: by 2002:a25:fe04:0:b0:628:af01:f734 with SMTP id k4-20020a25fe04000000b00628af01f734mr14210131ybe.441.1647688510994; Sat, 19 Mar 2022 04:15:10 -0700 (PDT) MIME-Version: 1.0 References: <20220309021230.721028-1-yuzhao@google.com> <20220309021230.721028-7-yuzhao@google.com> In-Reply-To: <20220309021230.721028-7-yuzhao@google.com> From: Barry Song <21cnbao@gmail.com> Date: Sun, 20 Mar 2022 00:15:00 +1300 Message-ID: Subject: Re: [PATCH v9 06/14] mm: multi-gen LRU: minimal implementation To: Yu Zhao Cc: Andrew Morton , Linus Torvalds , Andi Kleen , Aneesh Kumar , Catalin Marinas , Dave Hansen , Hillf Danton , Jens Axboe , Jesse Barnes , Johannes Weiner , Jonathan Corbet , Matthew Wilcox , Mel Gorman , Michael Larabel , Michal Hocko , Mike Rapoport , Rik van Riel , Vlastimil Babka , Will Deacon , Ying Huang , LAK , Linux Doc Mailing List , LKML , Linux-MM , Kernel Page Reclaim v2 , x86 , Brian Geffon , Jan Alexander Steffens , Oleksandr Natalenko , Steven Barrett , Suleiman Souhlal , Daniel Byrne , Donald Carr , =?UTF-8?Q?Holger_Hoffst=C3=A4tte?= , Konstantin Kharlamov , Shuang Zhai , Sofia Trinh , Vaibhav Jain Content-Type: text/plain; charset="UTF-8" X-Rspamd-Server: rspam05 X-Rspamd-Queue-Id: B4A12A0029 X-Stat-Signature: rd17mk5xm8p88ghmg9pedxffn3ipko9h X-Rspam-User: Authentication-Results: imf15.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=U2lczM+K; spf=pass (imf15.hostedemail.com: domain of 21cnbao@gmail.com designates 209.85.219.175 as permitted sender) smtp.mailfrom=21cnbao@gmail.com; dmarc=pass (policy=none) header.from=gmail.com X-HE-Tag: 1647688511-19258 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: > + unsigned long *min_seq, bool can_swap, bool *need_aging) > +{ > + int gen, type, zone; > + long old = 0; > + long young = 0; > + long total = 0; > + struct lru_gen_struct *lrugen = &lruvec->lrugen; > + > + for (type = !can_swap; type < ANON_AND_FILE; type++) { > + unsigned long seq; > + > + for (seq = min_seq[type]; seq <= max_seq; seq++) { > + long size = 0; > + > + gen = lru_gen_from_seq(seq); > + > + for (zone = 0; zone < MAX_NR_ZONES; zone++) > + size += READ_ONCE(lrugen->nr_pages[gen][type][zone]); > + > + total += size; > + if (seq == max_seq) > + young += size; > + if (seq + MIN_NR_GENS == max_seq) > + old += size; > + } > + } > + > + /* try to spread pages out across MIN_NR_GENS+1 generations */ > + if (min_seq[LRU_GEN_FILE] + MIN_NR_GENS > max_seq) > + *need_aging = true; > + else if (min_seq[LRU_GEN_FILE] + MIN_NR_GENS < max_seq) > + *need_aging = false; > + else if (young * MIN_NR_GENS > total) > + *need_aging = true; Could we have some doc here? Given MIN_NR_GENS=2 and MAX_NR_GENS=4, it seems you mean if we have three generations and the youngest pages are more than 1/2 of the total pages, we need aging? > + else if (old * (MIN_NR_GENS + 2) < total) > + *need_aging = true; it seems you mean if the oldest pages are less than 1/4 of the total pages, we need aging? Can we have comments to explain why here? your commit message only says " The aging produces young generations. Given an lruvec, it increments max_seq when max_seq-min_seq+1 approaches MIN_NR_GENS." it can't explain what the code is doing here. > + else > + *need_aging = false; > + > + return total > 0 ? total : 0; > +} Thanks Barry