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 05E6BC433F5 for ; Tue, 22 Mar 2022 09:00:36 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 707096B0072; Tue, 22 Mar 2022 05:00:36 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 6B71F6B0073; Tue, 22 Mar 2022 05:00:36 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 57EAB6B0074; Tue, 22 Mar 2022 05:00:36 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0020.hostedemail.com [216.40.44.20]) by kanga.kvack.org (Postfix) with ESMTP id 4A3556B0072 for ; Tue, 22 Mar 2022 05:00:36 -0400 (EDT) Received: from smtpin28.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay03.hostedemail.com (Postfix) with ESMTP id EC2188249980 for ; Tue, 22 Mar 2022 09:00:35 +0000 (UTC) X-FDA: 79271426430.28.BD4C272 Received: from mail-vs1-f42.google.com (mail-vs1-f42.google.com [209.85.217.42]) by imf15.hostedemail.com (Postfix) with ESMTP id E49FCA002A for ; Tue, 22 Mar 2022 09:00:34 +0000 (UTC) Received: by mail-vs1-f42.google.com with SMTP id i186so13882854vsc.9 for ; Tue, 22 Mar 2022 02:00:34 -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=hgfIwOPYuptRsTuNKCi9/HUJBoBxu7b265kLbqakkq0=; b=obV+azB1p6rhDPLAT0mRjy/R6+VmuleFeLZBUgp5ejFvuaC31FwKArh69ninRxOilY UOU0mD/cvDa75BFcaL93QMAAZsiZAhJYBQ5VpmVLW2Q4PEv5FQF3RJgY6lA/rz/aaGJ2 FuoXy83LFS0Z/Ew2bm7VRW/0blWe3YJ00+lshmiaHdProRlqRvuXL3GJBjCSWHGDu3bC EpH6UX6k9qzwSQkpNIWrE8Uoi32P/XA4Hcp68A28HOUACLo4+gl9KpKHeNha/evqng88 dPuLNKhCo2RPcYFSludSG698aIqeFgcvYwFJp3CzL5ntwwPPWJphFFW3BbDYzc4g1JVl aZNA== 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=hgfIwOPYuptRsTuNKCi9/HUJBoBxu7b265kLbqakkq0=; b=VTkri2W/BskmtQLd1PpsVxS7/ECmXyYTUcZyqjdOto7EGRtG+Z8s/MVaMz7rd+A+dr GVOFpbaR4GaY9QD36Y+cQnXxBbnHPTGBSaf+AHPu15Rkbg+/E6ujmeLfDI9/3GNyp0aO IOXjv41JQrSdhXBHjxaJJOCYe5h6DDEPmMIjG7Ael1KoAjYJaAbQY+xlkSIB4fg+sx7S YokFHcbZkwDrl/JK1coqdXUiE0MhwyYm9cKJ1C1aYxI9+Ol+R1edId3CQqGWHiqb2JeJ DoydjdbKlPtB+LbTiT7oxRECgTKUHxEpYvQh8O0EM7tsTxzpW2gkm6okLRbl6qKn1Zo/ hQ8w== X-Gm-Message-State: AOAM530u12Wi6lzYIanSomZAO8r2XsleD2QGJhvQgruQlmQTor8tb/zc BTWTJQKRR+Hw7N2dS/DyBZkzSd3sbbYVWbYixPJNmQ== X-Google-Smtp-Source: ABdhPJwBytuxvl00Jby+t9xir1uQGJuN5IuNFpeHLDV+zBSHYjNu3Il+S3/PGYJpCRGGBFbHf0jtzBkDYfSUSEGwcTY= X-Received: by 2002:a67:f956:0:b0:324:eb38:52fb with SMTP id u22-20020a67f956000000b00324eb3852fbmr5387865vsq.22.1647939634018; Tue, 22 Mar 2022 02:00:34 -0700 (PDT) MIME-Version: 1.0 References: <20220309021230.721028-1-yuzhao@google.com> <20220309021230.721028-11-yuzhao@google.com> In-Reply-To: From: Yu Zhao Date: Tue, 22 Mar 2022 03:00:23 -0600 Message-ID: Subject: Re: [PATCH v9 10/14] mm: multi-gen LRU: kill switch To: Barry Song <21cnbao@gmail.com> 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-Stat-Signature: c4s8t5pt5imuonsfyjdca1f6xjbuwew5 Authentication-Results: imf15.hostedemail.com; dkim=pass header.d=google.com header.s=20210112 header.b=obV+azB1; spf=pass (imf15.hostedemail.com: domain of yuzhao@google.com designates 209.85.217.42 as permitted sender) smtp.mailfrom=yuzhao@google.com; dmarc=pass (policy=reject) header.from=google.com X-Rspam-User: X-Rspamd-Server: rspam11 X-Rspamd-Queue-Id: E49FCA002A X-HE-Tag: 1647939634-333173 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 Tue, Mar 22, 2022 at 2:45 AM Barry Song <21cnbao@gmail.com> wrote: > > On Tue, Mar 22, 2022 at 9:20 PM Yu Zhao wrote: > > > > On Tue, Mar 22, 2022 at 1:47 AM Barry Song <21cnbao@gmail.com> wrote: > > > > > ... > > > > +static bool drain_evictable(struct lruvec *lruvec) > > > > +{ > > > > + int gen, type, zone; > > > > + int remaining = MAX_LRU_BATCH; > > > > + > > > > + for_each_gen_type_zone(gen, type, zone) { > > > > + struct list_head *head = &lruvec->lrugen.lists[gen][type][zone]; > > > > + > > > > + while (!list_empty(head)) { > > > > + bool success; > > > > + struct folio *folio = lru_to_folio(head); > > > > + > > > > + VM_BUG_ON_FOLIO(folio_test_unevictable(folio), folio); > > > > + VM_BUG_ON_FOLIO(folio_test_active(folio), folio); > > > > + VM_BUG_ON_FOLIO(folio_is_file_lru(folio) != type, folio); > > > > + VM_BUG_ON_FOLIO(folio_zonenum(folio) != zone, folio); > > > > + > > > > + success = lru_gen_del_folio(lruvec, folio, false); > > > > + VM_BUG_ON(!success); > > > > + lruvec_add_folio(lruvec, folio); > > > > > > for example, max_seq=4(GEN=0) and max_seq-1=3, then we are supposed to put > > > max_seq in the head of active list. but your code seems to be putting max_seq-1 > > > after putting max_seq, then max_seq is more likely to be evicted > > > afterwards as it > > > is in the tail of the active list. > > > > This is correct. > > maybe something like below can fix it: > #define for_each_gen_type_zone(gen, type, zone) > \ > - for ((gen) = 0; (gen) < MAX_NR_GENS; (gen)++) \ > + for (int seq = min_seq[type], (gen)=(seq_to_gen(seq)); seq <= > max_seq ; seq++) \ > for ((type) = 0; (type) < ANON_AND_FILE; (type)++) \ > for ((zone) = 0; (zone) < MAX_NR_ZONES; (zone)++) I explained in another email that you might not have the time to go over yet [1]. This has to be all *possible* generations, not just [min_seq, max_seq]. [1] https://lore.kernel.org/linux-mm/CAOUHufa50Mj6wusKvFX2cCAk58oTwCLDC8im+_B6OS_dP6=TJQ@mail.gmail.com/