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 C615CC54E58 for ; Thu, 21 Mar 2024 21:09:46 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 5CF666B0089; Thu, 21 Mar 2024 17:09:46 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 57F726B008C; Thu, 21 Mar 2024 17:09:46 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 447976B0092; Thu, 21 Mar 2024 17:09:46 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 3306F6B0089 for ; Thu, 21 Mar 2024 17:09:46 -0400 (EDT) Received: from smtpin10.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id C67E91602C1 for ; Thu, 21 Mar 2024 21:09:45 +0000 (UTC) X-FDA: 81922287930.10.301BF59 Received: from mail-ej1-f48.google.com (mail-ej1-f48.google.com [209.85.218.48]) by imf21.hostedemail.com (Postfix) with ESMTP id 0C9301C0013 for ; Thu, 21 Mar 2024 21:09:43 +0000 (UTC) Authentication-Results: imf21.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=dzWzGmzZ; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf21.hostedemail.com: domain of yosryahmed@google.com designates 209.85.218.48 as permitted sender) smtp.mailfrom=yosryahmed@google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1711055384; a=rsa-sha256; cv=none; b=049YMXsLyJYeK3vFTrudXz+tIvxe9IDMtdClnjEKuEXcJ/vq1wc2pYEvyq47TKL681QRtJ 9FzlDq6fDeYdNzHQwfi5mRVJO3cTFYiBGsQry5eZ02i+4uxD0K+F3fGM6UtI9KzyKQYxOE QxDvZM78sAiNLJIwTiS20mEF5kVZPOs= ARC-Authentication-Results: i=1; imf21.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=dzWzGmzZ; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf21.hostedemail.com: domain of yosryahmed@google.com designates 209.85.218.48 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=1711055384; 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=ZCPlx1GT9Pr9lMmsvRvjvdJRUIc8im5FcPiVj+xNHXc=; b=u9nq38Ysyrpe3VcNp7cnVuw7FaUWl9oqXQUO0oDXlRzZkpj5TdrYMm5ESUJx5bQ4miFCP/ EZxy4PooFEBHhWubdUhmRmKl7PEVNMVJf47W5+8AlFj3QPt/is8eEfZ+AymV5elYBq1AcQ s8hDLavrGo7jkQg+WGJnTiNBFPZR7Hc= Received: by mail-ej1-f48.google.com with SMTP id a640c23a62f3a-a46a7208eedso211812766b.0 for ; Thu, 21 Mar 2024 14:09:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1711055382; x=1711660182; 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=ZCPlx1GT9Pr9lMmsvRvjvdJRUIc8im5FcPiVj+xNHXc=; b=dzWzGmzZzZqtqrdzfxB/K9yrbhDdryvd7/tv2tvxN8SZUxr4ZL+Mw+3Y+AmVo3gNp6 EXp6BPj8u/HyrATbXcb/af0hzXzQ2p3mRCmo2zPR32ujU494iSgjSRxS19IvoqA5e1nG qTwPi0+z4Ji9XbXF0tqNeTrzvcE/obaycLx+jzzCWuuW4QddjXCUmh2jcC8aL9/t4NT3 qJZUy/FB6xb+UQChZZV6boAlZqBOh3gGXxTJbzGi77NFWYFeOt8lJYF7g+qqH+oveEpT 9r8bfMdVUoPKYeoCygve10zL9+gsRO9vMZfMLXGknooEzDbGhAyPadTHyDDR2+lYZ6WT NaIQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1711055382; x=1711660182; 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=ZCPlx1GT9Pr9lMmsvRvjvdJRUIc8im5FcPiVj+xNHXc=; b=adY7XHemuTCNJw7yL92vcjpmZNaXCgJ+1EbIoaRafTzXY0O3uFU1098M4ov6wtI2kg DsQDpEfhTo4qOHaF5DLk+r0c67Vq5e72WVQ0fACiuQtw5SxyTQOuwZexvFC/oWy0COoQ dMRuTOchxsGJPo+zj154Mvlhu5KTpgpfxaHGYxo5HXjzkfbV9SpOU3y2V2CQ28goYR2p U56QwspqvEjjhZwpmkVdajP9HYZnrmropLvv8DJBq7RBLP+Uk+r54Nflrtjn4d6ne1Wi k9dsK03YS/GInqExoOdSQoLp0jF1sg+ktWB0RziFh9kAzadmgzFPAxvuiT2KXusHmgED M95Q== X-Forwarded-Encrypted: i=1; AJvYcCV8VbeA16FDHWfSM8skCOL/cjy2vBEezaNQ/SKUdvwBGUgzl2htweZT5iQs+b5Cf2w5fNfObUkbRv0HNBXfMAw4umY= X-Gm-Message-State: AOJu0Yy9A+lBXxVcWoT2K3az90lQlmW4msdrnx3A6htWMQfcgagIRTeY ajhpaVjEZosvf1pfxnIesigIGI2P+ZF8ZWqiVCuQKX8Y79kuzx5Z+Bts007LSk1DqAgXvK0h4uk 2omn+SNUCHGaD83UmHsYtOFspjRsUcgMxJ+IM X-Google-Smtp-Source: AGHT+IHp7JkJ1zp0leoDozKWzrBJKEl5VRnRAgL+Vv6uNXQKBpFHxT3gWVhunq/zMBDvMTjx0oPFm8KkT/6Sg1d/LIw= X-Received: by 2002:a17:906:2c47:b0:a46:7b29:6bd0 with SMTP id f7-20020a1709062c4700b00a467b296bd0mr355919ejh.19.1711055382115; Thu, 21 Mar 2024 14:09:42 -0700 (PDT) MIME-Version: 1.0 References: <20240320020823.337644-1-yosryahmed@google.com> <20240320020823.337644-2-yosryahmed@google.com> In-Reply-To: <20240320020823.337644-2-yosryahmed@google.com> From: Yosry Ahmed Date: Thu, 21 Mar 2024 14:09:04 -0700 Message-ID: Subject: Re: [PATCH 2/2] mm: zswap: remove nr_zswap_stored atomic To: Andrew Morton Cc: Johannes Weiner , Nhat Pham , Chengming Zhou , linux-mm@kvack.org, linux-kernel@vger.kernel.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspam-User: X-Rspamd-Server: rspam06 X-Rspamd-Queue-Id: 0C9301C0013 X-Stat-Signature: 3m8grbkk473fiawz48sxjeibe7hyqsoo X-HE-Tag: 1711055383-73440 X-HE-Meta: U2FsdGVkX18bsRW5AN2S5lZODP5sZ0PP0uflR7DihikmoxFcmOM5rlr1EZFiLZJHfUkKVSZiu5rPGKbfalsnabReCs9F0+r3IdbQLKWhY3gDaUDyg38HnzlLiCzM+DRGk0q3vEm3pgm5r70PNoQgP0Ad1vLcmdl3cJuPaTGT07g2RjNYHSezp2GZ/Pa+/OBdpMuPaAIwx3XT5nQ3OafSSUJYNd1ckNoUZqpPPiFPJ8QpX9P0Ce9spRbXJeFuy8AM1N87dxgEAa+NpKP2M+ngoppIAvsR8jNr3dU2z/2/5qZdM86P7tMQSjtCvviBV7wK8cxovEvDCAlRRWipaS9tgjKDrwOW87qS5HKVCFkYf7X1O0k4qpcbeC+/SeUHL46PzMIvtRmy3W7CYqNbqNar9tfnTbsugUiecqUjg9HS9b/IAX0VJnUOzy8xXbV5u9SjFDXjHJlKfB7qnJm9LPwJ5Fb6kKAfKJN27dvBmomU6tJsKs1ohb0mjyPC8/vpW0Lw2JPQIapLRs8q2Iczsv/V8EBYPYMqcmk2G0o7m0fpyRqxuiC4Yju4btbNq+xYHJ1s09G8TOeMjsp0zBc9wsHnGTGWWMqGf6np6zCfjL7DlvGjbr5PHgqtUn0qwFXQ8XnpjhsEgm5dcEUJAaq5VQoHrXFQItXlGiYxOTQ9tgkMCfkzgI/3Bv7WZZ9TBU2lXdkzfawM70bXZIu0XTLO4jf+8g20a0PRgyufTbdf/cimoqx0Xsp+fMyxRo9oOYPLcF2EdI6YjvaVj8+TpmEaY9Z5s/K7Dj8rl5L63nJp0RKNKv5pUoxq2RiUB1X9AwkInGbSC1GyloiSPmAv77iJKctVI437wONS6K+pF0uUvdbenPnt466s1NIMCGRj61lb3K8h/3n5tqkJ53PzeGU4BvtHL0CkGaNETbm2cS0Oswm3J7P68W8fXRymaIBbyFvsc1DSeXxvEb3DrUUmVK5Z5fZ l24SpzNf Cpm8AcmgbtZfj6Io7piMOMwctYX2JQEaRxsMs X-Bogosity: Ham, tests=bogofilter, spamicity=0.000690, 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 Tue, Mar 19, 2024 at 7:08=E2=80=AFPM Yosry Ahmed = wrote: > > zswap_nr_stored is used to maintain the number of stored pages in zswap > that are not same-filled pages. It is used in zswap_shrinker_count() to > scale the number of freeable compressed pages by the compression ratio. > That is, to reduce the amount of writeback from zswap with higher > compression ratios as the ROI from IO diminishes. > > However, the need for this counter is questionable due to two reasons: > - It is redundant. The value can be inferred from (zswap_stored_pages - > zswap_same_filled_pages). > - When memcgs are enabled, we use memcg_page_state(memcg, > MEMCG_ZSWAPPED), which includes same-filled pages anyway (i.e. > equivalent to zswap_stored_pages). > > Use zswap_stored_pages instead in zswap_shrinker_count() to keep things > consistent whether memcgs are enabled or not, and add a comment about > the number of freeable pages possibly being scaled down more than it > should if we have lots of same-filled pages (i.e. inflated compression > ratio). > > Remove nr_zswap_stored and one atomic operation in the store and free > paths. > > Signed-off-by: Yosry Ahmed Any thoughts on this patch? Should I resend it separately? > --- > mm/zswap.c | 11 ++++++----- > 1 file changed, 6 insertions(+), 5 deletions(-) > > diff --git a/mm/zswap.c b/mm/zswap.c > index 323f1dea43d22..ffcfce05a4408 100644 > --- a/mm/zswap.c > +++ b/mm/zswap.c > @@ -181,8 +181,6 @@ struct zswap_pool { > > /* Global LRU lists shared by all zswap pools. */ > static struct list_lru zswap_list_lru; > -/* counter of pages stored in all zswap pools. */ > -static atomic_t zswap_nr_stored =3D ATOMIC_INIT(0); > > /* The lock protects zswap_next_shrink updates. */ > static DEFINE_SPINLOCK(zswap_shrink_lock); > @@ -880,7 +878,6 @@ static void zswap_entry_free(struct zswap_entry *entr= y) > else { > zswap_lru_del(&zswap_list_lru, entry); > zpool_free(zswap_find_zpool(entry), entry->handle); > - atomic_dec(&zswap_nr_stored); > zswap_pool_put(entry->pool); > } > if (entry->objcg) { > @@ -1305,7 +1302,7 @@ static unsigned long zswap_shrinker_count(struct sh= rinker *shrinker, > #else > /* use pool stats instead of memcg stats */ > nr_backing =3D zswap_total_pages(); > - nr_stored =3D atomic_read(&zswap_nr_stored); > + nr_stored =3D atomic_read(&zswap_stored_pages); > #endif > > if (!nr_stored) > @@ -1325,6 +1322,11 @@ static unsigned long zswap_shrinker_count(struct s= hrinker *shrinker, > * This ensures that the better zswap compresses memory, the fewe= r > * pages we will evict to swap (as it will otherwise incur IO for > * relatively small memory saving). > + * > + * The memory saving factor calculated here takes same-filled pag= es into > + * account, but those are not freeable since they almost occupy n= o > + * space. Hence, we may scale nr_freeable down a little bit more = than we > + * should if we have a lot of same-filled pages. > */ > return mult_frac(nr_freeable, nr_backing, nr_stored); > } > @@ -1570,7 +1572,6 @@ bool zswap_store(struct folio *folio) > if (entry->length) { > INIT_LIST_HEAD(&entry->lru); > zswap_lru_add(&zswap_list_lru, entry); > - atomic_inc(&zswap_nr_stored); > } > spin_unlock(&tree->lock); > > -- > 2.44.0.291.gc1ea87d7ee-goog >