From patchwork Wed Mar 27 21:48:14 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Barry Song <21cnbao@gmail.com> X-Patchwork-Id: 13607513 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 6128FC54E67 for ; Wed, 27 Mar 2024 21:48:49 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id E8A856B008A; Wed, 27 Mar 2024 17:48:48 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id E39B76B0096; Wed, 27 Mar 2024 17:48:48 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id CDA786B0098; Wed, 27 Mar 2024 17:48:48 -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 AF9B66B008A for ; Wed, 27 Mar 2024 17:48:48 -0400 (EDT) Received: from smtpin12.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 626071405BB for ; Wed, 27 Mar 2024 21:48:48 +0000 (UTC) X-FDA: 81944159136.12.8579E8A Received: from mail-pg1-f180.google.com (mail-pg1-f180.google.com [209.85.215.180]) by imf19.hostedemail.com (Postfix) with ESMTP id 990DB1A0011 for ; Wed, 27 Mar 2024 21:48:46 +0000 (UTC) Authentication-Results: imf19.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=dFgyLuFu; spf=pass (imf19.hostedemail.com: domain of 21cnbao@gmail.com designates 209.85.215.180 as permitted sender) smtp.mailfrom=21cnbao@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1711576126; 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=vZaxMQiAGaEDi7iy8b++0zsxGuLEpum0CyOAPkS1+08=; b=vCYBhDioPHooSblEtU1CPUZACCYnTwFYESUhlY9OnhxH4HN5VLBpCs/3ymU/dDKZAdkwl8 sGqXbm8J5zKjkt5Z+tPReu4Et0dtbrxfK9bG5TuhRy29/4PhKMXNhGFJ+7LqU3dAD/wU7r QgT+s9rWF2TGhlVpvZE3zssJIhVaeGo= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1711576126; a=rsa-sha256; cv=none; b=Vlfek/Mm1ymM/hSBPhHuJqZ4LSnAwCda1w9yA/Uq13f37koMR9TmKP9TA1ol6zgA9Mjaa5 QSc3sPZIKHlEPhSNd/QIwOI9gMqKB5MkleisRkLEP1qk2jU1oEsCv6LcqbYNb0StIbxmRe QXWxSi8IUsYpDP1unMLxdBjHwXFDkEw= ARC-Authentication-Results: i=1; imf19.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=dFgyLuFu; spf=pass (imf19.hostedemail.com: domain of 21cnbao@gmail.com designates 209.85.215.180 as permitted sender) smtp.mailfrom=21cnbao@gmail.com; dmarc=pass (policy=none) header.from=gmail.com Received: by mail-pg1-f180.google.com with SMTP id 41be03b00d2f7-5dbcfa0eb5dso182000a12.3 for ; Wed, 27 Mar 2024 14:48:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1711576125; x=1712180925; darn=kvack.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=vZaxMQiAGaEDi7iy8b++0zsxGuLEpum0CyOAPkS1+08=; b=dFgyLuFu8lv9sacBednEH08DvZXaEsdiY6k5YxqzUom/CpMimK+4ZfaOH02dQLI6sg ud0dk5a1hipm8ExDYwHK9I3W+cVAn+owNsTPJpShACcdLCkQo2C8tmGLildz8eBZlaF0 KbozDrA1kwFPwu+9R/kl+51ErwxGrmMLrSxIl1BKEWPXZRR74yd01zufTJ14v7Rt4Zw8 qyXVm2r4B4JUh+dTbeVenTPjkJH2Ys2kT6x5M+fWVjrFRFlImCgZKvXzeoR+eYEnhVFd 7BF999MFFfeOoF4harRhttDj3EHILyaXAOIqaCdyDU09M0/E4lXRjQG0j7RjoIVIMDbY w5Bw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1711576125; x=1712180925; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=vZaxMQiAGaEDi7iy8b++0zsxGuLEpum0CyOAPkS1+08=; b=q+b2cy5Sq6fc3e3TSrWAD8vQ4eZLr2kGzOVWqr7cK3/AT0crv1k+0qo2SxVZpI0Rfy TJcKhXHNTvZJyzLUc1o8zfLPnbK9qi3lULvyw5Puc36v+H9BBN7H4rAy/aGdjLA3kMKt vwyw7pZ8EvLD1qPf2Fmcb9wKfT/3kgakGPXxAVZWm1266CGDaMwswEDNSn/PY1VvdT+w /l0kBaxgtDwG5qrJKsyCPTmSJR+gHngFxomLGk4el09oeFf2sBfwbFS0HR7J83lCJHkI b0H4BdQss7HZQpCZie9T+uL4v44BUWN8CHwIq2vMWjsrWkJpiOC89mhuISOHstAEzzZo ncXg== X-Forwarded-Encrypted: i=1; AJvYcCUoJGfo03pmY8b0wzpKJnFboWOfLULbI8McjPo9xg7e+vRqOdi9FwFT0POH5EanMWDvDt9B3uQSBbQZGIMqMzp+2Do= X-Gm-Message-State: AOJu0YyCEnAt3AJfn0jL9hlSqkGLuPU0in/zhvlugEC17JvGwhe58HOa kwmPf5D4QnGkZcVw+SYWIWd3Mxx6v0rK/LQuiiTv+pzK7H9J4j87 X-Google-Smtp-Source: AGHT+IHWA6uU7NteAwJrmRovkygIk+95z4A0P/yAbn8K9xfXZsQCwqxrb6K5SOcmAijoHkEy31OF5A== X-Received: by 2002:a05:6a20:324e:b0:1a3:68bb:89d3 with SMTP id hm14-20020a056a20324e00b001a368bb89d3mr989970pzc.17.1711576125333; Wed, 27 Mar 2024 14:48:45 -0700 (PDT) Received: from localhost.localdomain ([2407:7000:8942:5500:aaa1:59ff:fe57:eb97]) by smtp.gmail.com with ESMTPSA id z25-20020aa785d9000000b006ea9a54dfabsm18633pfn.52.2024.03.27.14.48.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 27 Mar 2024 14:48:45 -0700 (PDT) From: Barry Song <21cnbao@gmail.com> To: akpm@linux-foundation.org, minchan@kernel.org, senozhatsky@chromium.org, linux-block@vger.kernel.org, axboe@kernel.dk, linux-mm@kvack.org Cc: terrelln@fb.com, chrisl@kernel.org, david@redhat.com, kasong@tencent.com, yuzhao@google.com, yosryahmed@google.com, nphamcs@gmail.com, willy@infradead.org, hannes@cmpxchg.org, ying.huang@intel.com, surenb@google.com, wajdi.k.feghali@intel.com, kanchana.p.sridhar@intel.com, corbet@lwn.net, zhouchengming@bytedance.com, Barry Song Subject: [PATCH RFC 0/2] mTHP-friendly compression in zsmalloc and zram based on multi-pages Date: Thu, 28 Mar 2024 10:48:14 +1300 Message-Id: <20240327214816.31191-1-21cnbao@gmail.com> X-Mailer: git-send-email 2.34.1 MIME-Version: 1.0 X-Rspamd-Queue-Id: 990DB1A0011 X-Rspam-User: X-Stat-Signature: diuw5tsa5efcgw7zixen6a3t7x49xd4p X-Rspamd-Server: rspam03 X-HE-Tag: 1711576126-626789 X-HE-Meta: U2FsdGVkX19+XWqTt26t0VAeYYd1vGZcC0rdx61lGFQEj7XSQTAdpIBziRDi9gdFzucmeHX5Ja5SjvyibHCj3KpMCN4ZbNUszcHTmOkShG2/SJKKrvmlv3RpoYCj/ikl3DItvmnazIsk0AYwgBToA8FVymye10lOmnkjAT4oFuFMyYzZrhFEHkBMEe1o9NTOotofqf9DpBKgqHtgwiRIJB6FEVZOH7bvM03a6cj4V+KWEcgJRjAqLiQVKVPE0M0WARm/0vjrHAWRK7ItWL+ADyoU2cCjq7QXUtk+EeQDKuWMLXQWSHN5+MY+Z6k49lUm30IVtWoQ50LnMR9SSDqEjj2myXf3FVVemppeERLmtUjdpaqc8uoCQhQEnU5wSsbXK4U2h/qXxnIMzXtx/tpn3kwmueNZCRNuCRZyJvgfcVCsucvNrB9TA53hF6IYd6q0bJMkQb0bltNQOJi+mGPdPFL7fDM68eyArINpD82fqQaEhzVAP67VQsEX0jVo+njAJBOOkWmolpKF2/WgiQFpvyH4+8kWtR9EBhNzrAgML3k5P8RtdA+/8bl7tUL8BGegbhAIyc2DiXgJEIPfX9OtNlOaX9AkoJ2ZO4iUntO3gwsh+iV7+aSxeciakS9bFLYWgXv3Tfzs3coBaaWRc6bGddCv79LcbdQIU4lMxNT8f9ybiZsozbPbEfGKykKZorNnh0ncT0tr32oNAFATeEIS0A0IfX6WIvEduURG94G/uqkigdxANkDHq4wSEYSSVsAjGEYmje4Y8KDAqh5ROXAueakND/mwxPcjIgpg9AZEWT1+aW4mFE2+Qk8SQKXH25W637oHPMTIg5jBy2Arjj3Dl2dYn4oIJEFst89jgzu/osn36JOtmX1whWYpqvAfyAZb3nM4s8jFSyXaxdJnpJxXkaftdTDHFxwqE7lJ4paIbjRg5luSAlSbdKcvBAEfIwBmVye6rXu0LZNvyhwy8u9 Gg6LXYTC SlmFlNB/ypbB9IJtNOBRuE9miJn40eCSRVdHyhgDkYqfAGi1CYxO5S3TxJeJ9frI08LMOjJinSdQR3qJ433LXS2mlaWZvzSIleLBQ/yvSxCKR5CksGQPS1dmcYn7swDbJRuw5uWYoXytG3rxFYrntBoelofJ3MKmg8GHxAl0OvrC4cP/Vr9Vq+4zwMtUh84diIOnZzJ7z4LEtBmPM62uv693bwqEpGJlH/20nvJr3mKly52lJVPHbl9u6UcDC2+9sOwN93v2StWdiFgI1k3M9P9QYnwICPEcYipZIglzBlsDTb2d3pttZq/TSyLUwzF+tXi9SIPZR3SnJXJklYIHkcpWZrcAuqWqwPvv2LDG7/2hCUlJigAECetMesD86Wv/g5QZPDrCg9N+OqQAYjnSdrnIDS99SiwDDIZL7niNlY3QtjZZVFKtxUKNWLF8HrB0sLtqH2+tHXSH8Mh5kjkcvMOjH0Vi3MgridJNfV1B8qJqY0reUjrfIIdhNlRuNXRv+CScaU/vq8eU1Zb6XnAuudGzUxRqiK34N8o0YnMc7wvTf4Pg3TB4yWoIncdYtVqWxXByKTEsS6cOUDTVwymNcAs8A02p22NU1idfm6kD7wqSYLolCUOR0Pyrztw== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000001, 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: Barry Song mTHP is generally considered to potentially waste memory due to fragmentation, but it may also serve as a source of memory savings. When large folios are compressed at a larger granularity, we observe a remarkable decrease in CPU utilization and a significant improvement in compression ratios. The following data illustrates the time and compressed data for typical anonymous pages gathered from Android phones. granularity orig_data_size compr_data_size time(us) 4KiB-zstd 1048576000 246876055 50259962 64KiB-zstd 1048576000 199763892 18330605 Due to mTHP's ability to be swapped out without splitting[1] and swapped in as a whole[2], it enables compression and decompression to be performed at larger granularities. This patchset enhances zsmalloc and zram by introducing support for dividing large folios into multi-pages, typically configured with a 4-order granularity. Here are concrete examples: * If a large folio's size is 32KiB, it will still be compressed and stored at a 4KiB granularity. * If a large folio's size is 64KiB, it will be compressed and stored as a single 64KiB block. * If a large folio's size is 128KiB, it will be compressed and stored as two 64KiB multi-pages. Without the patchset, a large folio is always divided into nr_pages 4KiB blocks. The granularity can be configured using the ZSMALLOC_MULTI_PAGES_ORDER setting. [1] https://lore.kernel.org/linux-mm/20240327144537.4165578-1-ryan.roberts@arm.com/ [2] https://lore.kernel.org/linux-mm/20240304081348.197341-1-21cnbao@gmail.com/ Tangquan Zheng (2): mm: zsmalloc: support objects compressed based on multiple pages zram: support compression at the granularity of multi-pages drivers/block/zram/Kconfig | 9 + drivers/block/zram/zcomp.c | 23 ++- drivers/block/zram/zcomp.h | 12 +- drivers/block/zram/zram_drv.c | 372 +++++++++++++++++++++++++++++++--- drivers/block/zram/zram_drv.h | 21 ++ include/linux/zsmalloc.h | 10 +- mm/Kconfig | 18 ++ mm/zsmalloc.c | 215 +++++++++++++++----- 8 files changed, 586 insertions(+), 94 deletions(-)