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 7D498C27C6E for ; Fri, 14 Jun 2024 18:54:32 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id BC93E6B0138; Fri, 14 Jun 2024 14:42:02 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id B788D6B0139; Fri, 14 Jun 2024 14:42:02 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id A400E6B013A; Fri, 14 Jun 2024 14:42:02 -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 857256B0138 for ; Fri, 14 Jun 2024 14:42:02 -0400 (EDT) Received: from smtpin26.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 2E6FBA2179 for ; Fri, 14 Jun 2024 18:42:02 +0000 (UTC) X-FDA: 82230363684.26.32BC13B Received: from mail-lj1-f182.google.com (mail-lj1-f182.google.com [209.85.208.182]) by imf17.hostedemail.com (Postfix) with ESMTP id 3F87B40016 for ; Fri, 14 Jun 2024 18:42:00 +0000 (UTC) Authentication-Results: imf17.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=ts25KEsK; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf17.hostedemail.com: domain of yosryahmed@google.com designates 209.85.208.182 as permitted sender) smtp.mailfrom=yosryahmed@google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1718390518; a=rsa-sha256; cv=none; b=JyLjiau71PDYJ/CscZC+Ye8a3hVZmv4IWAOX5Eq9J7XVvPYvCyZSsW88N5TRYjKPf1iCBm ZxyKABevx3XWawoq+ionfs37+AMOGJ9iEFwY+DIhiDD9QJG2LZsJXuvi7j5ozzECvpEltC sRLOjuvLG10y33+PpV8aeQnvzxrRzMA= ARC-Authentication-Results: i=1; imf17.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=ts25KEsK; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf17.hostedemail.com: domain of yosryahmed@google.com designates 209.85.208.182 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=1718390518; 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=Uj57t1ODMW2OcVRkdwrT3HO4yZE9XuGW/qj+IY0Y/Ko=; b=ixhapIc2u2PXsLREPpg07pl2KPKdq//QS08MgOss+k1/704DBweju8/Xe68cfp5hNWRTD8 FlHg0V7QpwUrnU/bhvTtRwjiAtT6opGL0qpWCvcXxaiAKk5zx44tdIE1lVDb3/tLM8TBaF OIEpfYFwRIEomi3Imsktwv9qwU1fp+Y= Received: by mail-lj1-f182.google.com with SMTP id 38308e7fff4ca-2eaae2a6dc1so45942321fa.0 for ; Fri, 14 Jun 2024 11:41:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1718390518; x=1718995318; 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=Uj57t1ODMW2OcVRkdwrT3HO4yZE9XuGW/qj+IY0Y/Ko=; b=ts25KEsKbpLe3ghKOjkj2g2b7uvsAlKMBTLnaHYP/DHoqDOYJHofRkYttmc494HFyF OLiBql+4vBcgtw7p2TTGc08z6BtCAuhmxdywuExS3fIJptWRgqg4TiKEMc4tEiKz+0Lg 1Dl9RYQwvLds6uNVKakuMYZ8m8C3oNWSqDWIRfevMAowBrv81jnusGHVmZemCr1aH29y +T3C8xHC4klIsuQm/Gz0B7EIqP/Xz8JFxVmQJvjVnfJg1f5XbdbbOL7XLxbigHPQ4ZU6 zNs3iEriX0wKpENr5V0KmFxTUluIJGDEnWZiq/lS8STojU1JaQ9q2PFzNv1uwzQbgk5H Os9Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1718390518; x=1718995318; 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=Uj57t1ODMW2OcVRkdwrT3HO4yZE9XuGW/qj+IY0Y/Ko=; b=BIrCuwnN3z/qPvZH/wQsmaHGxPF2g9lTYhpiCulBTxToys+1TQH7/yXu658oLSzzOz IJXfdRkRYWrzgg5dNXXw1frLHimsIp2O5tJFzveJPviFn4usIsDYHqT59kuNGy80dZGK 705rLksbhXNemA/sk4BIqa0oeFqgwurM62k5jC4etaNNvcu7hdWmHUWeLA8sWFnfL6ee r9T04+KNC/xPAYWPja//Da9uCtgcOVwNEa7jcGL96AGs69ozN6LGSPt/y9qhUpLNi6nU U1C+TlPj77NMy61OHkdR3fH2pkG2NG8RS3odQpP52c9EYBBQ+td80446syI8e03u8NJ9 G9mA== X-Forwarded-Encrypted: i=1; AJvYcCXHU9CC+YnPYyrRsk9WUUMdgUUulsBzmU+sY3uYn75Yuw69xGipmgMSpXkOKxlYKoNQbxzq+6HJO2e7ED7rxP9ORCA= X-Gm-Message-State: AOJu0Yz5R/dBaEedg6Pk9xl5MhrO1LESXIQMRpPylR3NWHk2tQBzwsVF TdPH7ighBWzzS3tJZ+urMtEfiCaY1GyOfRGf62jQRaoTAlrUC0lbZCkezXl9lscGfbJ6diAy3H7 A/R1Vz6O/XiZTjLgpGD9lXQR7hRwl9SVuix41 X-Google-Smtp-Source: AGHT+IFzCV2gPA0qaN2e8B6qjxroL2HsxN6qG52djyO/eLkThaU6zDeJHIOz6lk6qq7yEJ8jNwjWoXlE0b8yTETozrA= X-Received: by 2002:a2e:a443:0:b0:2ec:1973:2b89 with SMTP id 38308e7fff4ca-2ec19732c1amr18483151fa.30.1718390518143; Fri, 14 Jun 2024 11:41:58 -0700 (PDT) MIME-Version: 1.0 References: <20240614100902.3469724-1-usamaarif642@gmail.com> <20240614100902.3469724-2-usamaarif642@gmail.com> In-Reply-To: From: Yosry Ahmed Date: Fri, 14 Jun 2024 11:41:21 -0700 Message-ID: Subject: Re: [PATCH v5 1/2] mm: store zero pages to be swapped out in a bitmap To: Chengming Zhou Cc: Usama Arif , akpm@linux-foundation.org, hannes@cmpxchg.org, shakeel.butt@linux.dev, david@redhat.com, ying.huang@intel.com, hughd@google.com, willy@infradead.org, nphamcs@gmail.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org, kernel-team@meta.com Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Server: rspam12 X-Rspamd-Queue-Id: 3F87B40016 X-Stat-Signature: qrcyme3fgw8te6693byszk4fjn1oud3p X-Rspam-User: X-HE-Tag: 1718390520-499989 X-HE-Meta: U2FsdGVkX1+oOGn+0ot4K0IXpsBYxO3E1Y+Ih4eDVmrPM+mttEw+xDAm/ilEIye2Htwc+SLBkTkvw1hTStAkCEEsdBztp2UWUtihrRyNp7kBbVfDnCj6E/U5P/QQJ/PfOS2MI8mqzuR8asQ1mQH5ZCsZZE0+tWR1w7QUrWl1q+JQ/zsG4Hi7W963ZIiQ5q4g/FHxnY5EcemJONxD8HXaupzRXkv+gv1OSdciPsM+ujb9EXwqiUrSPqatwZCn0699/cnEVss4x4/wbxtKhixcycwcMFoE160R6KOrCyDWX8SZxqnNzrAv3Y+w42BT81xZzmpbe2l4qMTM8B+2UNOtiKlwJsBIEBUU55I+UDUfChb7e2BjKO1aEu20fqG2imS5jThI0052nhwchpo9YVpXRNDJRpOWVHpt1xjfnv/T8dxrCqAfcXJY1DCesDlJaVBLKaxekFPhL4S2ObFbuQCQzRWNVrckTkl5qLDktzVIk2iwweqW0q70lP1x2Dy+QklIwzRsnvtEclgpk2eHOwQOiM4EnH1GHjf85i/UyswtbzYyPZRI6NFMU7T3k3M1o3xwd9dVzOKuEkCTcaDPWhK+radYMf4hLDevQz96ATbb6U2/Mtp59kw7THMDcvB7fkT2aMgNwW4Hqyy3NtS3EHSLn08vCgQBj/sB7CD+tIZ0aHLn5lLNXHQVn5dG17+sjzYyV2oOnfwIHsKVFcWzLSBdF4u1/+gWn4koTao2MYbz8aCOZRRr3HZhegFkpyfdrFpctRU9WgSd+O0VoKA0KGOP19ynukBsXhIhpGFNK6rRKwi1cZyizMhpQnY1VkPdkWMWMRFZTw9iI5KdmWATG3sbAdymCqtq7gvqk2RCjV5R16vIGhUySxQl+zOnkti5CEzzYuC7rkrPwpPGnsH98lUOk3d9jOPS2BBbUpuzN0pyg9bVzp302+v3/ZO3MVFVuKMunXgz6nBdRrVPhk+vs68 h0ASqOiq EGmBaPhoYLMJYhc/tbNazPA7AI9K7XWcU6KiwpHwhRMXcZqXRY75zdiIVoKHA5m5x0DDr6htWkBl97y+/+TmuriVBmFzLpWb9pN2JwEhjI+lX648QiktogoQhQocdCZNWXwpqFRNAPi8ubAg2NgxHT/oicWNEvcKWDEaPjGftglaj/8VIkl16ao+dAc5d0XwN/L923nR/0MdcjGYmZ4+2SMApg6AjB+0MGgcma6Q2vH372hl2aWBKB3xMSUffwZUrj6Sa 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, Jun 14, 2024 at 5:06=E2=80=AFAM Chengming Zhou wrote: > > On 2024/6/14 18:07, Usama Arif wrote: > > Approximately 10-20% of pages to be swapped out are zero pages [1]. > > Rather than reading/writing these pages to flash resulting > > in increased I/O and flash wear, a bitmap can be used to mark these > > pages as zero at write time, and the pages can be filled at > > read time if the bit corresponding to the page is set. > > With this patch, NVMe writes in Meta server fleet decreased > > by almost 10% with conventional swap setup (zswap disabled). > > > > [1] https://lore.kernel.org/all/20171018104832epcms5p1b2232e2236258de3d= 03d1344dde9fce0@epcms5p1/ > > > > Signed-off-by: Usama Arif > > Looks good to me, only some small nits below. > > Reviewed-by: Chengming Zhou > > > --- > > include/linux/swap.h | 1 + > > mm/page_io.c | 113 ++++++++++++++++++++++++++++++++++++++++++- > > mm/swapfile.c | 15 ++++++ > > 3 files changed, 128 insertions(+), 1 deletion(-) > > > [...] > > + > > +static void swap_zeromap_folio_set(struct folio *folio) > > +{ > > + struct swap_info_struct *sis =3D swp_swap_info(folio->swap); > > + swp_entry_t entry; > > + unsigned int i; > > + > > + for (i =3D 0; i < folio_nr_pages(folio); i++) { > > + entry =3D page_swap_entry(folio_page(folio, i)); > > It seems simpler to use: > > swp_entry_t entry =3D folio->swap; > > for (i =3D 0; i < folio_nr_pages(folio); i++, entry.val++) I was actually thinking we could introduce folio_swap_entry(folio, i) after the series. Multiple callers of page_swap_entry() have a folio already. It would save some compound_head() calls. Alternatively, for this patch we can introduce zeromap_update_range(zeromap, offset, size, value). Then we can use it in swap_zeromap_folio_set/cear() as well as swap_range_free(). It would also be a good place to park the comment about using atomic operations (set_bit() and clear_bit()).