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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5F6CAC433F5 for ; Tue, 22 Mar 2022 09:00:42 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232098AbiCVJCG (ORCPT ); Tue, 22 Mar 2022 05:02:06 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42874 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232106AbiCVJCD (ORCPT ); Tue, 22 Mar 2022 05:02:03 -0400 Received: from mail-vs1-xe2c.google.com (mail-vs1-xe2c.google.com [IPv6:2607:f8b0:4864:20::e2c]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2270ABE0F for ; Tue, 22 Mar 2022 02:00:35 -0700 (PDT) Received: by mail-vs1-xe2c.google.com with SMTP id 185so8691331vsq.8 for ; Tue, 22 Mar 2022 02:00:35 -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=mL/E+Z/rd2t0Qhgshp3GJCxo9h6U1O7V9Mm2Lkt0epWDEyhO5wsrnzT3BhFbyY5gUa AB9sBA0gTyCegG6QhHg99ISzosrhlTNwWfQh645z2CERfuc6xjUz7B2kIjjYloKzqxeO EJfvuzS8n4ZEh1U6IgFcKXvqdAVcVCVNNPA5fRNpnWBsCLk2M5Eqj4kBtZ+aDB7+7KCC qKB1cVZgRBeFouG2tBzeQWHeaAsCx2P71K8NV8yUgb35hGRJkhqoT98HS8yXbrWnkGQN xxj8uBh5BUzIkroQ9eO6VWQyJHp0DheXihDZovip4Sg31sU7oGrPXWgDRaQcfGGZmX85 Tq/A== X-Gm-Message-State: AOAM5330nwkaU1tb9y87MERLAg42u8lQtk8imLEuUuxPvX8UsB08anXg tK/Y3jxZ/Zb21pZh9/XJfZcWqHknVZqr+9wtf95fYQ== 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" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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/ 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 bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 4DFC2C433EF for ; Tue, 22 Mar 2022 09:02:00 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:Cc:To:Subject:Message-ID:Date:From: In-Reply-To:References:MIME-Version:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=Rzo0dt/YKqFKDn14B3cHwBzUyd7WtG3cJVnI1NrRh6U=; b=3UFMVzBTHNHG+n 52k9fckxIzvw9STPgO7UJce/QvSVKlBpyPhjaIEQnZVo6/BU7Sl5M8kVcthbylA0pgSPIYYEk7GZH /TzloPmMZiZmxNP1hvZzbdClVAMe8xIpS5hbuWtC7vzC1fp/w/zR2CYYlWHOnXPykYsMrdEIXGQSa s7YMdwM/vCLqztCkeZALrAmD65lu7BDrexU8W69wuN0MqN0A7dl08VBcUBG9Fkef3dl3gbOZ9l60q YdzPV8H0qixpQ6y6XQh6y18AonTPlqwU5+R01UULQIuCqIdfbT58ifG9G8xf69UWI1PZM8oSGtBWo rcNr8dn1SjOHvI6eZmgQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1nWaNa-00AVjx-Mg; Tue, 22 Mar 2022 09:00:38 +0000 Received: from mail-vs1-xe36.google.com ([2607:f8b0:4864:20::e36]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1nWaNX-00AViL-1e for linux-arm-kernel@lists.infradead.org; Tue, 22 Mar 2022 09:00:36 +0000 Received: by mail-vs1-xe36.google.com with SMTP id i63so13828149vsi.5 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=fz0/1U+942b81EqhfyF3hyYgYLeY6sqxLX6H98KV1wo9UaoJX6kp8XedEZ35TH5OKj pHMWkD3ZVcTTAijenAbz96o0GxBxyFVA7jmn8HwwBwRL3Bi4vynXfdUuNvD6p8p8mChi DLOZmQwWAf/w8WqAguwjo4jVRlGQ3Z2lyhvpV7MDaXnjpinP58aeFcONwVX2HhEst8zD BYMyAgadloorA855SL9buERYutPUvC9J+KtSvQ4OLgrtHHaCqmIaahZgnMMpOaocmksW i0joXPW37rYqOHu4jVtMBb+gQUOQWwK1EA1R78+fRVG9/qga0C3/gx7Vwijhu64YKA5k xEHg== X-Gm-Message-State: AOAM531MsQjqKigoFnGa0kM8MnWADqS/FReNnZI2wh1uxIyUDxWO3mqV X54p5SzOJlG5iptSCdXzIAnzVekxYRSugZdZ8dnqKA== 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 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220322_020035_121696_C1F31B35 X-CRM114-Status: GOOD ( 18.62 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org 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/ _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel