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 C337CC47422 for ; Fri, 26 Jan 2024 21:19:59 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 434816B0088; Fri, 26 Jan 2024 16:19:59 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 3E3626B0089; Fri, 26 Jan 2024 16:19:59 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 284726B008A; Fri, 26 Jan 2024 16:19:59 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id 180B96B0088 for ; Fri, 26 Jan 2024 16:19:59 -0500 (EST) Received: from smtpin03.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id DACC740E9F for ; Fri, 26 Jan 2024 21:19:58 +0000 (UTC) X-FDA: 81722729676.03.6ED5E9B Received: from sin.source.kernel.org (sin.source.kernel.org [145.40.73.55]) by imf11.hostedemail.com (Postfix) with ESMTP id 491B240006 for ; Fri, 26 Jan 2024 21:19:55 +0000 (UTC) Authentication-Results: imf11.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=KPqrGKi+; spf=pass (imf11.hostedemail.com: domain of chrisl@kernel.org designates 145.40.73.55 as permitted sender) smtp.mailfrom=chrisl@kernel.org; dmarc=pass (policy=none) header.from=kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1706303997; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=ZevVAc9vtWOD6kK22wSFQG27u38LXBsFOf5paXbFIt8=; b=NyWzVDSWkQUmOpHKQ3FqX69ueWBrenjoA9XsCETDAsFknAaAJ0vCuPEabxOeykIwRHr4bV HdoBPDWxhAdNVvK9hhPGaEjKOLFpGjoF0VlpWJgRZaFJ2ooc34CUod3gDMruVdqZ2z+l7n uuaxQwrpAfJukob0/pAEvspedl12skA= ARC-Authentication-Results: i=1; imf11.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=KPqrGKi+; spf=pass (imf11.hostedemail.com: domain of chrisl@kernel.org designates 145.40.73.55 as permitted sender) smtp.mailfrom=chrisl@kernel.org; dmarc=pass (policy=none) header.from=kernel.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1706303997; a=rsa-sha256; cv=none; b=kRnjw4ydMhYJd3Ky6KqGsOyFp+EONFUO0CUFnfJNBYaBb3fkwNHHtw+cSfDhW/FLYWJsmF qQAEOu7Wnz2bBnWjaM71IRZB9C5uSd2KRc7h8JZe5DqcIfy6gv5FJNU1h9Mc4lLAg9hE9N nDojAVpehBxXY5WsCh7QcRGkU+BR+Yc= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by sin.source.kernel.org (Postfix) with ESMTP id C3CA5CE370B for ; Fri, 26 Jan 2024 21:19:52 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 0D0DCC433F1 for ; Fri, 26 Jan 2024 21:19:52 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1706303992; bh=g+ueImr0RPbrGmsoFelyQwne/GFqsa3s9BFQ3P7pP6E=; h=References:In-Reply-To:From:Date:Subject:To:Cc:From; b=KPqrGKi+69qOSpmZ+KbmvKosdLUluUxXRyfLOKziZHf9SYTF5dg5nDohrX04Mtd2f O9MzBiJ0xZjyddx5W9BmphG4RxbxpQpVAb4JqJOJGJYRD2AFNboETG8o3V1RW0bvy2 IyBqnUBcZBH0p51/eWSIp6C6LumoSXi3fUcD4MlxQkqg103La62mLfa7tb9J/f4d13 kvfVJCw5Wk0YUa2YnsZrEFGlrr3ihDzOWvuQRu8DVU4Swg/I4A/bPjkiBKx4ZU6vAq 82POnO6+1+sAv35vwdkN02k0HnnUIaTPrdHfMjLhPUWIMvDimgSKFettCpXQKKB8I3 zS39aLdK7Dj9g== Received: by mail-io1-f45.google.com with SMTP id ca18e2360f4ac-7bed8faf6ebso28106139f.2 for ; Fri, 26 Jan 2024 13:19:52 -0800 (PST) X-Gm-Message-State: AOJu0YwR1O7QUzHG+/IQzOu6YDG/0fKbwOcV6PjclS4D+Gb4B06hB+dH 8+KHJlQIRzkTwi2PbPVrfXuNhDDCEnBVkAL5YmpOO0yrj4zrITEAqmC1C83zF2EVB5SkOQuZqJq /KsKZhaG3YjbaX1V/anzd8P/cLgKheOZR+dYM X-Google-Smtp-Source: AGHT+IHjoovFGYhfrOsOiX2J7Q/RG5loa0jY/XGn0WfkMb+S6mul0iXCkOLNTpoaFmkgcvgll6/NAc0ys0f70Vs1YYg= X-Received: by 2002:a05:6e02:1d15:b0:362:8bdf:45cc with SMTP id i21-20020a056e021d1500b003628bdf45ccmr516586ila.17.1706303991343; Fri, 26 Jan 2024 13:19:51 -0800 (PST) MIME-Version: 1.0 References: <20240123184552.59758-1-ryncsn@gmail.com> <20240123184552.59758-2-ryncsn@gmail.com> In-Reply-To: From: Chris Li Date: Fri, 26 Jan 2024 13:19:39 -0800 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH v3 1/3] mm, lru_gen: try to prefetch next page when scanning LRU To: Kairui Song Cc: linux-mm , Andrew Morton , Yu Zhao , Wei Xu , Matthew Wilcox , LKML Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Queue-Id: 491B240006 X-Rspam-User: X-Stat-Signature: p5k91jq9pecease3md6g16mbnofhsz9y X-Rspamd-Server: rspam01 X-HE-Tag: 1706303995-57148 X-HE-Meta: U2FsdGVkX19cjqurB6SfnnD1o1lnhjTKayhrKSE8HMt+qDUzOXy+WfpmQrgsEbBxamtfB02NucU7sv/MHc1nqYPASGvezOw/0a/zgHo3VMqbOZsHEEZV9FeQiLTT7gf6gvtsbGMJ+jcqDJvwm2oIOwsMekbv5mYr331v4h8xQhRQM+Y+1UDsjx9OqLCf9BezI1/nJP9Dn4EN2NGALwwFabkrO75l3hHVFOjwe/FqeZIqTJFNYuCDR6zEp4dF1KTpaZQ6XtBNPm+y+WTetQVujYvMLKV9RzADS7Ec1Z6hzX6GqRi/hQn2yLvJNGongzk3o3yx6QdQ8e9cnuL1NOZS6IhacHhhsIIfQ8jJD/KNHGA13zCFlgeGpwDb0vvZpR1wkeBH8RWXyL2qJGk7tjO+jziQsFWP5A47uaiHJqbSfKEvn6RjWWlMLaPn2Rj+AIqjkBQivc/ssREtE63G+tCj4mrIh3o352D2bqChnrjIWlg4V36wwQoX6/QrQ1Kc5/7+WJh5W8wa2DGMDEHZ0CA/JQ3Iqe2M19o6Jf4pW0dC4nQsCHa+HoS6wcR4Kpn3uN1/2VwaFRJNOMDKZy+hxkZxsqMvPT5QZayuTtRRdk/KGJ5rY1H8e60JBn061Rdn4MaGb9pOPgJ0VDQnZDzK99fB96i057I2S7NHSoSVULx1qzlTZW6dfX+rLUts/cCnt/jf/30P2/t6Nt2HGWf6sMCeaTzgjOC55hQG6lrLVW3iYthNweKCkpWJXYN7B/Fflgz5O3mWl7L9CRXbk6gdGgBvbyHZdLhFe9yoU6DOmfWDAypMgU8GDyqF3Vs4TVuNP2BNU5oU8S37rf6a7Dp6KRkZcMeYtqiOgX8iVRPMRriVltOiqZiHuDuAvNw/p+HoeHgx/+CrUZo5S5DERAJDuYD0B18WWsbwDFQJxuhcibp0Hk0BJ/VIyCllOibFDSh5Lz+hTc2Q4ZO3gapYpL/gjNk paPzyLMg ZoACXLEhYiuUH6zQJULazOfSSklRUoX40J/jWRebDWHmXkur+bCHGpFgghMA8if/Klh4flef1l38B0YWE0i/4jKPcngBjPPSg9YksynHPPZTyXcQuKoZGkE7nh6UMFYlqcVkpSdDRBr5VTbUgit/JK8Qk08pnbJau1vAOYr85CQ8xXQ1EHw1iR0P0B3zTQ+ABGj5HHnZmRQjL2JwWd6oFVUYWhKXPUOzrcNdfDymrOwjQIhcCr8zJGfMYn5zrUSAfW8Nh5q5s6YAThmw+Gi23P96YHWdgcvAHNFDD 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: List-Subscribe: List-Unsubscribe: On Fri, Jan 26, 2024 at 2:31=E2=80=AFAM Kairui Song wrot= e: > > > > > > > > > This makes the code flow much harder to follow. Also for architectu= re > > > > that does not support prefetch, this will be a net loss. > > > > > > > > Can you use refetchw_prev_lru_folio() instead? It will make the cod= e > > > > much easier to follow. It also turns into no-op when prefetch is no= t > > > > supported. > > > > > > > > Chris > > > > > > > > > > Hi Chris, > > > > > > Thanks for the suggestion. > > > > > > Yes, that's doable, I made it this way because in previous series (V1 > > > & V2) I applied the bulk move patch first which needed and introduced > > > the `prev` variable here, so the prefetch logic just used it. > > > For V3 I did a rebase and moved the prefetch commit to be the first > > > one, since it seems to be the most effective one, and just kept the > > > > Maybe something like this? Totally not tested. Feel free to use it any = way you want. > > > > Chris > > > > diff --git a/mm/vmscan.c b/mm/vmscan.c > > index 4f9c854ce6cc..2100e786ccc6 100644 > > --- a/mm/vmscan.c > > +++ b/mm/vmscan.c > > @@ -3684,6 +3684,7 @@ static bool inc_min_seq(struct lruvec *lruvec, in= t type, bool can_swap) > > > > while (!list_empty(head)) { > > struct folio *folio =3D lru_to_folio(head); > > + prefetchw_prev_lru_folio(folio, head, flags); > > > > VM_WARN_ON_ONCE_FOLIO(folio_test_unevictable(fo= lio), folio); > > VM_WARN_ON_ONCE_FOLIO(folio_test_active(folio),= folio); > > @@ -4346,7 +4347,10 @@ static int scan_folios(struct lruvec *lruvec, st= ruct scan_control *sc, > > > > while (!list_empty(head)) { > > struct folio *folio =3D lru_to_folio(head); > > - int delta =3D folio_nr_pages(folio); > > + int delta; > > + > > + prefetchw_prev_lru_folio(folio, head, flags); > > + delta =3D folio_nr_pages(folio); > > > > VM_WARN_ON_ONCE_FOLIO(folio_test_unevictable(fo= lio), folio); > > VM_WARN_ON_ONCE_FOLIO(folio_test_active(folio),= folio); > > > > Thanks! > > Actually if benefits from 2/3 and 3/3 is trivial compared to the complexi= ty and not appealing, then let's only keep the prefetch one, which will be = just a one liner change with good result. That is great. I did take a look at 2/3 and 3/3 and come to the same conclusion regarding the complexity part. If you resend the one liner for 1/3, you can consider it having my Ack. Chris