From patchwork Fri Jun 28 03:11:15 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: alexs@kernel.org X-Patchwork-Id: 13715386 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 8B72DC2BD09 for ; Fri, 28 Jun 2024 03:06:53 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id C5A006B0096; Thu, 27 Jun 2024 23:06:52 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id C0A116B0098; Thu, 27 Jun 2024 23:06:52 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id AAA9F6B0099; Thu, 27 Jun 2024 23:06:52 -0400 (EDT) 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 8C9666B0096 for ; Thu, 27 Jun 2024 23:06:52 -0400 (EDT) Received: from smtpin10.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 2D212141369 for ; Fri, 28 Jun 2024 03:06:52 +0000 (UTC) X-FDA: 82278810264.10.0418C77 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by imf10.hostedemail.com (Postfix) with ESMTP id 9F432C0002 for ; Fri, 28 Jun 2024 03:06:50 +0000 (UTC) Authentication-Results: imf10.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=pglwPe18; spf=pass (imf10.hostedemail.com: domain of alexs@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=alexs@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=1719543992; 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-transfer-encoding:content-transfer-encoding: in-reply-to:references:dkim-signature; bh=1TMR8PTkBzotJsEYe/e3bsoXCkk9astEOhs+kh9copw=; b=OaUfQI+IbtfpLONV7sHBuIheKek8hYB3JbvFlnoAqI3BZIdZKGCJV9au1TZjKxjkZGzkpc EP2By18BEoVxY+Hs5xHGYxawI7MNvngejjsmrK8XNDYl+dQWdTM3IbAnVJLl6UqMVziQtx hrELZL9CnY++0HscZzLkqKbUODAPvO4= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1719543992; a=rsa-sha256; cv=none; b=Pig+9AIQP7ybsoAGdLYOKTUHvbbUkjTQ4dgwtJr/Bn3RtTJaxbyee2b2YUADv7ewIushaP rG1I7Kfz2aCmcIX8/Qr5mTZiAU62vbkt59HCeXYxGgCXZX3ygTyEjUJ38KsxDETRILO6A0 D2fcmELCDNCYa9pyGEM+HknNIMNZqjs= ARC-Authentication-Results: i=1; imf10.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=pglwPe18; spf=pass (imf10.hostedemail.com: domain of alexs@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=alexs@kernel.org; dmarc=pass (policy=none) header.from=kernel.org Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id 9A7CA6204C; Fri, 28 Jun 2024 03:06:49 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 61538C2BBFC; Fri, 28 Jun 2024 03:06:46 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1719544009; bh=5+tBHusmR4aUF4zyf7Vxi1FNFEYWZk+/bVwuyAj8IsI=; h=From:To:Cc:Subject:Date:From; b=pglwPe18LUlrctHdShdWVYrBQP5VIPx3LY5Hd5hty+1rUqP9VU/G8RYzKefRNPMsQ NOD3zhg8nhVN4bTlPcNmnq7mRiRDdp+4ywDCwKuwrfsSAZUL+dGZYLDZMp+lUcpt/G VDvSdMp2qBTIQKPoGLj6Bfc/AIhcOZTYwOU7ximIbxlNnYOBTEXfCgs6Hl5l7YjloN haTGshE2CcfBfKQ9ryr2mwIjFJ/UVZN2D3gRcLs6iArOf8encGnj8S/qvmixMdD133 UjFGae6kmU3PtFIeoj1/j1tdbV7G48b0rPEjMQKipSZZVwvLhPqg4FTPWtBjreqUCt WoUPHmPTW4jJg== From: alexs@kernel.org To: Vitaly Wool , Miaohe Lin , Andrew Morton , linux-kernel@vger.kernel.org, linux-mm@kvack.org, minchan@kernel.org, willy@infradead.org, senozhatsky@chromium.org, david@redhat.com, 42.hyeyoo@gmail.com Cc: Alex Shi Subject: [PATCH 00/20] mm/zsmalloc: add zpdesc memory descriptor for zswap.zpool Date: Fri, 28 Jun 2024 11:11:15 +0800 Message-ID: <20240628031138.429622-1-alexs@kernel.org> X-Mailer: git-send-email 2.43.0 MIME-Version: 1.0 X-Stat-Signature: f76b7r13a7chazpbgdk1ciuxqnbtir6g X-Rspamd-Queue-Id: 9F432C0002 X-Rspam-User: X-Rspamd-Server: rspam08 X-HE-Tag: 1719544010-137831 X-HE-Meta: U2FsdGVkX19yUNyvur3ZciHBio4C+vXwJ7GcrJGR9EOps/NVeXkdK4vyhsNm/8xevOUhhSb4CanEgBE5Jacp5qo9K77mlSha8kVXRoZowp97ndZfnrChTeecGEJPmH8BVKjkMeShGpThk1X40vyhPIexa2kk1c2riBlD8NE9Wi87tYafVC+u4qUCv/7lfmys63/YKZ8mdSQnFo+pew0JA/jc789zNjIMa6lb/AARBXasDp7n4X3Jp/6FzAxxF8s24HiJXXkoWwEoAFG9R/VcuseOQY3W4b+i4O3yggv58GKKCWs0mbbsWtpcZHmdTeIieHZsNxUayvpVn3D1t213zdXGuQYb3IeuyhsxTrp16iOMajJ44bGCoS5kiGvebynI1lUMKopzsLVXAJUw1VSCzLxxzhu4itcAYfCnPcIL8H9tRA7uoBDX60ywMYTYDg24bS41/xkoCXe+gnP7JeI0gUfzISC3oBpPfVle13T60gnzeqsWOao0NZuS7JtJ4dEi4VBNPoMTbt4OyVj0c24QUCgp1Q1G+OrsIVdyit4nJp2NSvmccBBHHfqLxJIm9BdeGQCpxmC5NrNg3rhHoGZNd/6psdcmpMhdoeGiTJVvO9Cf8tegbsiQYL4NJS/RuSiUukbhygvcjl5WJd7wDxiy6nPYigYwPkgr9UD7eOCw1HZjvChiU2F03YfJ9oukYhJpRuwY2aLXyXbtd5vGChrMsZlrrLB8N/lVQyAiUQHI7sTJoyxw41trooBRfFRkTKzeWXbqA4x5vGxBnOJMSM7wOzvqGoX6DT7XSgqPlbQ70IHkuEAriOizA3R2ZgfR6LX++ClGNKy4xSA1SFAMp06FzEjbenLP60Dl9fpayO1qZTXWsT2qtS/5sVCxG92+in0u2vyPGGH8E2EGy9SK1KxV4sBEBEYjsyJAPR5ORNSIDTOJutgbgiaANBdOBj3mdzslEzX0bTWSg+7Ef1trjvu 6r5rd6lq tTFg7R2H/XKbMA+pg+5TqrUqzUEJ/ueRUtGug6NgXPvfnun7uBQomv0+hcOkdoPrRPHRIiC81FxAVCdBli7AxsHVtlPIRhTPq4OtpErcsG7gJvVAjSfi6JH4sXtwnlcdOU4G1+Z49Ji/vY10YWYpkrwvSRyKlHQ5a6BLGXvx6Uidhq7WrZV5eyoUg3M/FQ6UT5M0AxOIzeR0KKSPTWSztarFHey4bRbXyrWjRNCxeoHkMyaqCdjSsaVjnzaONQRpEHrRqCh0UCmKNGY9PTy7SRND48J6rIEMRqPzKkcIlPzsRRnDXEBzruQImmN8Y1MNKwLgfnDKtZTjFLeAIpEFioPKm2mSgZ8DPIVcnhaDZR63bPpdWe+cNOkxAZg== 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: From: Alex Shi According to Metthew's plan, the page descriptor will be replace by a 8 bytes mem_desc on destination purpose. https://lore.kernel.org/lkml/YvV1KTyzZ+Jrtj9x@casper.infradead.org/ Here is a implement on zsmalloc to replace page descriptor by 'zpdesc', which is still overlay on struct page now. but it's a step move forward above destination. To name the struct zpdesc instead of zsdesc, since there are still 3 zpools under zswap: zbud, z3fold, zsmalloc for now(z3fold maybe removed soon), and we could easyly extend it to other zswap.zpool in needs. For all zswap.zpools, they are all using single page since often used under memory pressure. So the conversion via folio series helper is better than page's for compound_head check saving. For now, all zpools are using some page struct members, like page.flags for PG_private/PG_locked. and list_head lru, page.mapping for page migration. This patachset could save 123Kbyetes zsmalloc.o size. Thanks Alex Alex Shi (8): mm/zsmalloc: add zpdesc memory descriptor for zswap.zpool mm/zsmalloc: use zpdesc in trylock_zspage/lock_zspage mm/zsmalloc: convert create_page_chain() and its users to use zpdesc mm/zsmalloc: rename reset_page to reset_zpdesc and use zpdesc in it mm/zsmalloc: convert SetZsPageMovable and remove unused funcs mm/zsmalloc: introduce __zpdesc_clear_movable mm/zsmalloc: introduce __zpdesc_clear_zsmalloc mm/zsmalloc: introduce __zpdesc_set_zsmalloc() Hyeonggon Yoo (12): mm/zsmalloc: convert __zs_map_object/__zs_unmap_object to use zpdesc mm/zsmalloc: add and use pfn/zpdesc seeking funcs mm/zsmalloc: convert obj_malloc() to use zpdesc mm/zsmalloc: convert obj_allocated() and related helpers to use zpdesc mm/zsmalloc: convert init_zspage() to use zpdesc mm/zsmalloc: convert obj_to_page() and zs_free() to use zpdesc mm/zsmalloc: add zpdesc_is_isolated/zpdesc_zone helper for zs_page_migrate mm/zsmalloc: convert __free_zspage() to use zdsesc mm/zsmalloc: convert location_to_obj() to take zpdesc mm/zsmalloc: convert migrate_zspage() to use zpdesc mm/zsmalloc: convert get_zspage() to take zpdesc mm/zsmalloc: convert get/set_first_obj_offset() to take zpdesc mm/zpdesc.h | 134 +++++++++++++++ mm/zsmalloc.c | 454 +++++++++++++++++++++++++++----------------------- 2 files changed, 384 insertions(+), 204 deletions(-) create mode 100644 mm/zpdesc.h