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 200FAE82CD9 for ; Wed, 27 Sep 2023 20:58:00 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id A01EE6B0206; Wed, 27 Sep 2023 16:57:59 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 9B2026B0207; Wed, 27 Sep 2023 16:57:59 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 879B06B0208; Wed, 27 Sep 2023 16:57:59 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id 752AA6B0206 for ; Wed, 27 Sep 2023 16:57:59 -0400 (EDT) Received: from smtpin17.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 3FF57A0ECD for ; Wed, 27 Sep 2023 20:57:59 +0000 (UTC) X-FDA: 81283589478.17.9A748A8 Received: from mail-ej1-f47.google.com (mail-ej1-f47.google.com [209.85.218.47]) by imf16.hostedemail.com (Postfix) with ESMTP id 76816180006 for ; Wed, 27 Sep 2023 20:57:57 +0000 (UTC) Authentication-Results: imf16.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=wbayliZ1; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf16.hostedemail.com: domain of yosryahmed@google.com designates 209.85.218.47 as permitted sender) smtp.mailfrom=yosryahmed@google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1695848277; 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=vdc/ydgmgNMsNbxoUCD1oiRqxp/qtZNwRhbMfUlTHN4=; b=HliZYsg6lBtgh8Lvi7RMgVBU7Oal82qPypOfowoZpj1ylYlFix9CaJJQxvi5EjX/QY1kMM ZSSwhy0madcb1TcivtJWmILpjZeXRW5qQDFbcN6DXQQS3qu3dn72vUs/U95G4Zw2Xq0zob rrB/TI5j2LIHnEI4d81+CUYuuTpzDLo= ARC-Authentication-Results: i=1; imf16.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=wbayliZ1; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf16.hostedemail.com: domain of yosryahmed@google.com designates 209.85.218.47 as permitted sender) smtp.mailfrom=yosryahmed@google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1695848277; a=rsa-sha256; cv=none; b=Mdsjf6uPo1t8O5MJ3b/FLM+2TRNzQaMzZYXmnJlvsTHu/6CuiEnUwNjxWvYVEn+UP8nTM6 CKJTuKKrN6UgwgeZJ2uKTHqAutE/JbifpDGD55A7HuyULeT2VN57yxlUtivDtJ11WZrnry 277gRbWcFc48JcFMlRhHgEb8TLdCnn0= Received: by mail-ej1-f47.google.com with SMTP id a640c23a62f3a-9ada2e6e75fso1596415366b.2 for ; Wed, 27 Sep 2023 13:57:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1695848276; x=1696453076; darn=kvack.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=vdc/ydgmgNMsNbxoUCD1oiRqxp/qtZNwRhbMfUlTHN4=; b=wbayliZ1tilJr2kaaqECwgeK0jXrzilLTnRh56mhz2AaEohGgp00K/L9hFEu7yFOYb YRYH39jUiefYtYLgXiB+lHWrX5agiqIDm3HeVu9ldEHVByda9mypf25VLLOqceq39IX2 zX7/x66oTxHykTps9Nt46s/47HKINOLP1IreGz/qpMGSsFEw0BEc/OvTI2rJOPHsSHXH XXmOw4wO9w5PaNMiM2jDCFuwo2cOF80B5uRBZIa9PTosQB/17WJoaFTpQNatx9UCmKgy 3+iEDcWAs55beEhUBquBmblEcKF946aC1WqRlOC4gV3xn0krv86fFV3hpVfwIfY1SxUF MNkw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1695848276; x=1696453076; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=vdc/ydgmgNMsNbxoUCD1oiRqxp/qtZNwRhbMfUlTHN4=; b=OPHbK5lFEh11/b8UEFR1AlCfotALNWoV8VeUN6cA9/wCDbeysofmUu215rRwevbV+Y 9sXSLHTfKj0m0i6SSn3cmIeNK0yFkyyMolRpW6G7sUO2UkFQvMgAL1Sn3FOp1bwo6reY NvnavtgRuJNAr0EWnN3tMpWAuesXhBhtGUqhZDxUMiokrqXkRQXTKkJUbARmvNMrhawj TBlE76gpyPQv2jXXquqBtH2IcU8oK7HIkSJFvd+vm9iZW7Aro22iXg3w8s35+0EpBRVC PHahhHt1LAM0R9SJ1GC3pZtnU/8n08mXvnldyFZM20yYBLh9mJUcT+5aQXXn7mpi1E4l Yc6w== X-Gm-Message-State: AOJu0YzHnMOCqzmn/cLTyP0dAF+A7RAKg+91heWmhPd1tqHtKpWrdSOE GvpiI+aQaH9nAKe8CYRJbxa/scG0CLE4SuoP8XITqw== X-Google-Smtp-Source: AGHT+IE6ya4aiuqCKeFX4eCkv0dpQdxRXXuKr7lp4BmNdbwAhjzQ6khsMOEbO2k9fxgBuTyCFU8e4AIwnh7la5ovSiw= X-Received: by 2002:a17:906:cc57:b0:99c:6825:ca06 with SMTP id mm23-20020a170906cc5700b0099c6825ca06mr2473711ejb.12.1695848275848; Wed, 27 Sep 2023 13:57:55 -0700 (PDT) MIME-Version: 1.0 References: <20230919171447.2712746-1-nphamcs@gmail.com> <20230919171447.2712746-2-nphamcs@gmail.com> <20230927205153.GB399644@cmpxchg.org> In-Reply-To: <20230927205153.GB399644@cmpxchg.org> From: Yosry Ahmed Date: Wed, 27 Sep 2023 13:57:17 -0700 Message-ID: Subject: Re: [PATCH v2 1/2] zswap: make shrinking memcg-aware To: Johannes Weiner Cc: Nhat Pham , akpm@linux-foundation.org, cerasuolodomenico@gmail.com, sjenning@redhat.com, ddstreet@ieee.org, vitaly.wool@konsulko.com, mhocko@kernel.org, roman.gushchin@linux.dev, shakeelb@google.com, muchun.song@linux.dev, linux-mm@kvack.org, kernel-team@meta.com, linux-kernel@vger.kernel.org, cgroups@vger.kernel.org, Chris Li Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Queue-Id: 76816180006 X-Rspam-User: X-Rspamd-Server: rspam05 X-Stat-Signature: omkfgzwm3xtwmpnutqj3d15kmxfnx43r X-HE-Tag: 1695848277-592748 X-HE-Meta: U2FsdGVkX1/bwgd76XOw9Tt7JgI+K2QltJzTCpnT+ye6nqMhyZn1olvDna/Pq4URQr3nWKXoP48GSpgQS/66w7Tx7KEFA4t4k/RG2agYxM7oSr4s2fshjgRfjv1pVmIGZTaZD/TkCrF+KTDZERb+yHgrcZOlFA7NYMPCOvkD26ROpPNtE5/C8N1qUkR5qpHrPAyyQPlwDUv6/UqvIKspC65OI6aVbl5TfDccrXw2GINp/H9xUWRneUhbqK/dhhAflD+BXbh2PhRpipUKe5SJnb0V8RJqTliLy1OYpdPky0jpNDUV1ooKSFflRkNHMfZLACSiJ1gxcyFrzFUFZTD5Y4pwqBq98QuM4dItjCOdHhTPg2JHpnPBjeIpLPHwDpu/aT6OIaEjUSHoXk13sS2opmeXMGJbvoWCQZFFdfnXJ9GFgE7LiqwdmXldjqB23f1k0nkGaIhdfqxjUGdhC+a5ZVl7rXn0MIJ63grMP7HrA8SSrCySxTJpzyyjPZnxsHLqNJguk1xdFy22Dm5gi5YjfVGZJniCtUBlgvg+0D8BEy0B1ifF/Q2mAN8jSMaXnVMvQLVuLEHfDZNGNS42y9Q+oCvU2B4xtsb6q83AIicSretKtBCENYkkD6SysDhq2jaQoYiVvYDGaT9gz6opimlOf/9ukInTbBjx/Qzm9Wyv8EuBMO+ds2jakbK4Ru3sFf7t3enQ2yWtHLhEcUIrW+RKL8n/tLjQ/prWTdyJaH4RWUyRUcVuwlv1LTvfecsrlnfNuHQmiZPnFXkwt3qIbCu0xsRiol8bNl/pV6bS6yq5QFGbJTBFVHwxpQ0apeV9QWiT0QlwaNSXBwysjv87H3kRAbaZbAdYgAOe/BjYhKtDQ9s7Zdm3wFsnb+7KEGGgRGnIPJwY9AIo9e3sBEdrubQZFMkPpuTMPH4epLgyf6H8Nak0Txe7bP0rZo146nkL0AtwwvcUK7pNQpz6PQhwuNK sIOPSdW7 lPPzycAHcFiVp+b/gDFe9cZ7+WW15eK6Eyjd8r6xiS28o3Xgj9NW4C8HJN444yxo9p6HFgpOCrft5fxr0ehBOfXxIAXp5gupBL7RhPRW0gOdNZMQEXLS04e05Zvmbe/5yndEzFFyfF+jlpTypHn1d63zHqz7nFyP/3MBuHWWFi4ZPwpxJUdagTVpp3177VJP5UWAAd15WXDXu65eT3phzbeFxQti9eKM2X8bPmXgu1hwgVe9+mvMNxgYKx9AQwDtRB+Y1fK7iXgPTZG2ZzamAxVmPdpTyK28byQ9Nr419u9BMndn0YonSTq4+vgi47etEAxpEceH1cFgICZh/NhQT1gpmJJ1tZ9kgKnSHKId7Kuh4S5I= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000166, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: On Wed, Sep 27, 2023 at 1:51=E2=80=AFPM Johannes Weiner wrote: > > On Mon, Sep 25, 2023 at 01:17:04PM -0700, Yosry Ahmed wrote: > > On Tue, Sep 19, 2023 at 10:14=E2=80=AFAM Nhat Pham = wrote: > > > + is_empty =3D false; > > > + } > > > + zswap_pool_put(pool); > > > + > > > + if (is_empty) > > > + return -EINVAL; > > > + if (shrunk) > > > + return 0; > > > + return -EAGAIN; > > > } > > > > > > static void shrink_worker(struct work_struct *w) > > > { > > > struct zswap_pool *pool =3D container_of(w, typeof(*pool), > > > shrink_work); > > > - int ret, failures =3D 0; > > > + int ret, failures =3D 0, memcg_selection_failures =3D 0; > > > > > > + /* global reclaim will select cgroup in a round-robin fashion= . */ > > > do { > > > - ret =3D zswap_reclaim_entry(pool); > > > + /* previous next_shrink has become a zombie - restart= from the top */ > > > > Do we skip zombies because all zswap entries are reparented with the ob= jcg? > > > > If yes, why do we restart from the top instead of just skipping them? > > memcgs after a zombie will not be reachable now IIUC. > > > > Also, why explicitly check for zombies instead of having > > shrink_memcg() just skip memcgs with no zswap entries? The logic is > > slightly complicated. > > I think this might actually be a leftover from the initial plan to do > partial walks without holding on to a reference to the last scanned > css. Similar to mem_cgroup_iter() does with the reclaim cookie - if a > dead cgroup is encountered and we lose the tree position, restart. > > But now the code actually holds a reference, so I agree the zombie > thing should just be removed. It might be nice to keep in shrink_memcg() as an optimization and for fairness. IIUC, if a memcg is zombified the list_lrus will be reparented, so we will scan the parent's list_lrus again, which can be unfair to that parent. It can also slow things down if we have a large number of zombies, as their number is virtually unbounded.