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 E9B0EC3DA4A for ; Fri, 16 Aug 2024 07:37:06 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 5ADCF6B02D1; Fri, 16 Aug 2024 03:37:06 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 55C166B02D2; Fri, 16 Aug 2024 03:37:06 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 4234B6B02D3; Fri, 16 Aug 2024 03:37:06 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id 22F056B02D1 for ; Fri, 16 Aug 2024 03:37:06 -0400 (EDT) Received: from smtpin26.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id C8342A8FCB for ; Fri, 16 Aug 2024 07:37:05 +0000 (UTC) X-FDA: 82457302410.26.6C0D1A2 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by imf04.hostedemail.com (Postfix) with ESMTP id CED9440013 for ; Fri, 16 Aug 2024 07:37:03 +0000 (UTC) Authentication-Results: imf04.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=bANrtMWn; spf=pass (imf04.hostedemail.com: domain of chrisl@kernel.org designates 139.178.84.217 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=1723793787; 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=GGmsmmQtgAmwgpMTtjNG3iRynR/5vik4GF5cI0TS1M8=; b=q2UmJST60NWZIDquqTbTGC/HPtBUrtBnWVnFgaZBOULwF3OlOwByn7Np3tnDb4OtZl0F+W K+ZpfLkOu/SXeI4IglU+kcS25iwNWqvPbSrsHHp/9aljjBX+xzQFmVlveWsj8hFu0wjzbH gs56IK1WO9MAD2AXGS7N/u+na2e44Tg= ARC-Authentication-Results: i=1; imf04.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=bANrtMWn; spf=pass (imf04.hostedemail.com: domain of chrisl@kernel.org designates 139.178.84.217 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=1723793787; a=rsa-sha256; cv=none; b=gTBPKTJscmQeRJc/rwaKshMhQkIIzYKpDPnezO/CiaQyY9K+u2Snb2DzA9KlqQnyTfq0lz mKlueka/5lPvy5rjXgBexxLIbuMPLRcalnZrGJI8s0iqKXC/TLXVyCw7pdgizAOqvmzF6b z6srRovuqyK2jvFXWR4MTm4E5PN/txY= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id 9DDD762101 for ; Fri, 16 Aug 2024 07:37:02 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id E374FC4AF12 for ; Fri, 16 Aug 2024 07:37:01 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1723793821; bh=uzuJfTXPe7neM6t/yzL0dWNGEP8CEt+SIWppqKHzaes=; h=References:In-Reply-To:From:Date:Subject:To:Cc:From; b=bANrtMWnXhse6awDD8O6xOJSQCsp+s1gI9ha2zGs9gx6SoIKn1hfNUPloeM9Ib5B3 JHnmd8FnEMcFyPusaLbZceR2SY5CL+nIw1gF5ID+TYDu5tgyd8Mtzzt2muUuwSoxR1 w1UyFP0IZR9NLbjiSY4WV97l0aTPkj6/gBK2SSt1pns4GrBmv7Y/1HIBEMUH7EEaid l6pPDo2JwGHYhDYCPwrXZbqPesa4aySioQY9sdMyaHSosioBUwO7sLje6l454lt0NR mIOumSZh/6AJK9ucUuW58Aj1Apb+WXeVDFa5Djlf84PPvCy+fjHiuN5/GZIyauCQOu iGqnmvBvaQg0A== Received: by mail-yw1-f174.google.com with SMTP id 00721157ae682-65f9708c50dso15858867b3.2 for ; Fri, 16 Aug 2024 00:37:01 -0700 (PDT) X-Forwarded-Encrypted: i=1; AJvYcCXZ3fmcoZUjnqjO9vwC8xNrIAqFk65Plz5mvrbczZX2jkHeN09Oi41j+VT6PhG6O5cqAPyUF5/Iv3VK8a9bGxnK8tg= X-Gm-Message-State: AOJu0YxTWjDYeS/DL+uJEE1+rLv7mPIVnqeSKZQ//IfeTpTq08MdCoC0 3nmGd4nV42Yn1DscBiCXGbpJofLmPkQXUBgkUSqVRn2PFlRFcuXdbhibGFi9Hat911ub6APmh28 6gWrIkOHUEp1fn1VQbHOWn16UqFkmKMDxv8EJKg== X-Google-Smtp-Source: AGHT+IH750XFcbd3RlLlGRypRDvl9yZV+Lcv0nO3OSNd4+FHM7UHtJv3wC7eYlkX6F3NpWWbXqA9Pt+z/HqB40SHDYM= X-Received: by 2002:a05:690c:7489:b0:6b1:9dc9:23d6 with SMTP id 00721157ae682-6b1bc019d96mr26833207b3.41.1723793821164; Fri, 16 Aug 2024 00:37:01 -0700 (PDT) MIME-Version: 1.0 References: <20240730-swap-allocator-v5-0-cb9c148b9297@kernel.org> <3c79021a-e9a0-4669-a4e7-7060edf12d58@redhat.com> <87le17z9zr.fsf@yhuang6-desk2.ccr.corp.intel.com> In-Reply-To: <87le17z9zr.fsf@yhuang6-desk2.ccr.corp.intel.com> From: Chris Li Date: Fri, 16 Aug 2024 00:36:50 -0700 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH v5 0/9] mm: swap: mTHP swap allocator base on swap cluster order To: "Huang, Ying" Cc: Kairui Song , David Hildenbrand , Andrew Morton , Hugh Dickins , Ryan Roberts , Kalesh Singh , linux-kernel@vger.kernel.org, linux-mm@kvack.org, Barry Song Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Server: rspam03 X-Rspam-User: X-Rspamd-Queue-Id: CED9440013 X-Stat-Signature: 3krydyzdt8j1wqo5k1gutnbmiwtninx1 X-HE-Tag: 1723793823-873997 X-HE-Meta: U2FsdGVkX18wQrEvcTYvrLFCBvjPB5WCfgKndavqxn8oDj9KkGav/XIVpRxyimNMv1zlJ/z+XMV/DoZ8K+gohHSaeFgQcg006ok6dCOYPXzGY2d+slsBD4tXYxWOIntR9WjdeIEtAqOcjzCK4oHl7OaN6x3VFHzOr+mD/zlHIjPLEEOglrLiFqA5lKs7vqclQAPyBnRoxDz0FAu+yMLqULOKx2dO3c5UcotjSurz5rLwcajaLFDvLnHOF98n34v1dQsHIUoqhg1py76vem4fy0h1WKdgvp4ejmFnVvDPS2oaky0NIchluRPT2qm5E/aqi8ZDswKGfwPF302LhZEOOAECq5uumF1tf+ayjzk+Xi1hSvECGaHtzYmpUwTcYh5ylNfteKWWu3Fcemm9cHPCzhzootmVmZniCXUAQloHy9+Tyu5XKpZEw3b+aBTsZkfa/+aJRZiytjIm/ukOiaq4aXC9i+CBCWKZFhG35K7teKzo1FO9Mw4wl4I2qfavuIklAvKMOEu5bs5/di2WmDCHtdjXKeaL8yNlo8yDUfdHkup/0n2/WHfZmpxK8gDd1LKJahS1sF0KXRpA13qzrIw2Zvx13nIAEJQvjVUnpN7vpkyu7kvg9/vGnfLwSX6YmE0VDDIaxohbULzrDBka0k88s2EDPgy8juWoHJb6kL8NokaiLC9KwBBYugt8HMQY5cpTDLDdwTHfVlQ3jjldLylSKncNXT2ICjvX6WePiebSbaKeyKo81hPeyeoI0a6DrrHs04RLiYwqysrJmoQPkooSvsU9uNM7RdGCADdw28BPf8uohjfQr2RGmWSb4ibvRpbTOkcKPzqLT7F+V2KK94UXi3yYB5hHD87g61Qguu4D10M06Lj5Qqb3PEZf9ibNV1u19HhzkKRVrv5Qo15gNHPsWzoHrG/X6pzS1E+E/RDGnL3wCM6dGk9yA+YQ+I38+AUXUL6rk8coqtZPp77UPXb vyg7uOI2 T7N0UyuVUebzLyzI4zT7KD+CNNztKBsNvedayHZ69zsp7oElt99qoyz3vuz/xEEJbsyu9WPao210/wPiFw5JAJ687cNN2/iRrn+t1pUY1tLNCSxUU8OuWlqAx6Tfc/+lug8edT1J/3Qcmzl0UNVdmh6ohtv+l+1IpXXYhPNNyqhFUbToPF20T4jrH1CG2HcucoS1Sxe7rHLYXcTlpH4l72JsV1u6jbIrFt4cLCSGZ713BaH6eAu0fzi0AuBF4KPSvwn8SnCc6ibrjt94ya0INdeKv8bmLfpRSksdsapWQiSvstSU= 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 Thu, Aug 8, 2024 at 1:40=E2=80=AFAM Huang, Ying w= rote: > > Kairui Song writes: > > [snip] > > > --- a/mm/swapfile.c > > +++ b/mm/swapfile.c > > @@ -450,7 +450,10 @@ static void __free_cluster(struct swap_info_struct= *si, struct swap_cluster_info > > lockdep_assert_held(&si->lock); > > lockdep_assert_held(&ci->lock); > > > > - list_move_tail(&ci->list, &si->free_clusters); > > + if (ci->flags) > > + list_move_tail(&ci->list, &si->free_clusters); > > + else > > + list_add_tail(&ci->list, &si->free_clusters); > > If we use list_del_init() to delete the cluster, we can always use > list_move_tail()? If so, the logic can be simplified. Thanks for the suggestion. I feel that list_del_init() generates more instruction than necessary. It is my bad that I leave the discard list without not a list flag bit for it. I do want to clean this up. While we are at it, because the cluster can only belong to one list at a time. We can use a list indicator as integer rather than bits mask. If we give the discard list the same treatment, that should remove the special condition to add a cluster to another list as well. Chris > > ci->flags =3D CLUSTER_FLAG_FREE; > > ci->order =3D 0; > > } > > @@ -474,7 +477,6 @@ static void swap_do_scheduled_discard(struct swap_i= nfo_struct *si) > > SWAPFILE_CLUSTER); > > > > spin_lock(&si->lock); > > - > > spin_lock(&ci->lock); > > __free_cluster(si, ci); > > memset(si->swap_map + idx * SWAPFILE_CLUSTER, > > @@ -666,7 +668,7 @@ static void cluster_alloc_range(struct swap_info_st= ruct *si, struct swap_cluster > > if (ci->flags & CLUSTER_FLAG_FRAG) > > si->frag_cluster_nr[ci->order]--; > > list_move_tail(&ci->list, &si->full_clusters); > > - ci->flags =3D 0; > > + ci->flags =3D CLUSTER_FLAG_FULL; > > } > > } > > -- > Best Regards, > Huang, Ying