From patchwork Thu Nov 17 16:38:34 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nhat Pham X-Patchwork-Id: 13047107 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 42D1CC4332F for ; Thu, 17 Nov 2022 16:38:43 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 9F0926B0071; Thu, 17 Nov 2022 11:38:42 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 9A0B26B0072; Thu, 17 Nov 2022 11:38:42 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 869686B0073; Thu, 17 Nov 2022 11:38:42 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 778AA6B0071 for ; Thu, 17 Nov 2022 11:38:42 -0500 (EST) Received: from smtpin05.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 54AF71A0E44 for ; Thu, 17 Nov 2022 16:38:42 +0000 (UTC) X-FDA: 80143492884.05.7C9E44D Received: from mail-pl1-f175.google.com (mail-pl1-f175.google.com [209.85.214.175]) by imf14.hostedemail.com (Postfix) with ESMTP id 03A1B100013 for ; Thu, 17 Nov 2022 16:38:41 +0000 (UTC) Received: by mail-pl1-f175.google.com with SMTP id v17so2133124plo.1 for ; Thu, 17 Nov 2022 08:38:41 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=+c2guzYAy3KEmovKT5HAVBgQbsytJbBWzUeTnpwgE6Y=; b=QWTuhSLRP8sFHQssMb37CLfEHNWt+Ye/lVD3Yw08WjqYkk+8DFwtMeec9h2ZSaqrto 9S+Ro1YZfL5TPdmzJBupzkudHvTu/8EbGHccyCp0b/nPmIxnXdCF+abvgAohcaV4rmI7 x2g1mMc+D+vS9MrcwCSaiE+zkKNM+EVFwVtoUqpLj+CPzBzfQe2WvpEzJ0ADdvtgpijX HBbLIMhBzdFnPdBuApdkx43HKo4Hn+vln58Q60Y4nqtNeTmSM4dw5wwS5INOzKGQ8e7R hNehNUm5yMTLY1b8HXv8ceCDqTd3WkODn7Pv+jIN5U8o6OfIXel2H4r+msSJ25thYbwE +K8A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; 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=+c2guzYAy3KEmovKT5HAVBgQbsytJbBWzUeTnpwgE6Y=; b=Jn3/T3HYnqSZA14yw6+NrZmdQU8EnyUYe+zdh3jRVQR8D+nGjR4u8rH0xCgoxDsyOU 3CPajQHxSf0dcMbcwWEXZtPS2B5ycDpSIYGS1Mh33K1CE5DdsGioP0ARGwc4pVRMhTiI go2mmAb5ytqfilaY+/W+F3XKyxo4SDseP5Ps91vwGg1zn35Q2wWOce9vFPXTJh+plw8R nG+gC/9x6uSQQ3sDa3Xd7kHoS+kembwNnffP7w4mqHIK5FbueFkRBdD8aLJ1QZniOn1f 3ue0eIzosMwWV9nH13e4GvYO/9g6gkZz/NcWBfSMvvHQt9eS4zD0+hxGFi6AxLMqlhxL wFcA== X-Gm-Message-State: ANoB5pkRp+bd6WTTBVoihem3RHH/6LETAp1PFCsdI7jaBs+siWwyz4m4 TQ/XFkTEWH095NelPHPuDrQ= X-Google-Smtp-Source: AA0mqf6KPDoFnyIhTMz5eYPN1D+XbB1r7bmV525cp8MQrDwdceNwajqZWkZzzjKc+yd3fLv3gJQeCg== X-Received: by 2002:a17:90a:d805:b0:213:a95:88bd with SMTP id a5-20020a17090ad80500b002130a9588bdmr9470314pjv.98.1668703120971; Thu, 17 Nov 2022 08:38:40 -0800 (PST) Received: from localhost (fwdproxy-prn-009.fbsv.net. [2a03:2880:ff:9::face:b00c]) by smtp.gmail.com with ESMTPSA id m4-20020a170902db0400b0016c50179b1esm1617955plx.152.2022.11.17.08.38.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 17 Nov 2022 08:38:40 -0800 (PST) From: Nhat Pham To: akpm@linux-foundation.org Cc: hannes@cmpxchg.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, minchan@kernel.org, ngupta@vflare.org, senozhatsky@chromium.org, sjenning@redhat.com, ddstreet@ieee.org, vitaly.wool@konsulko.com Subject: [PATCH v4 0/5] Implement writeback for zsmalloc Date: Thu, 17 Nov 2022 08:38:34 -0800 Message-Id: <20221117163839.230900-1-nphamcs@gmail.com> X-Mailer: git-send-email 2.30.2 MIME-Version: 1.0 ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1668703122; 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=+c2guzYAy3KEmovKT5HAVBgQbsytJbBWzUeTnpwgE6Y=; b=o2QhjoAuTZOcq3/jGoXXJR9XCdWpfPJTYUM2IDFukxHFRAnoZMelfGm6KOeIoCNO8zCWfB 9tt3h843KPHc06RqO+nYscNwsM+ghWZup+BZbl80Aso+57QWQZQsyxWPCXD/wdGos7/mro JK7phmHy82Lz1/c79OgJAHw6ZQhUHPs= ARC-Authentication-Results: i=1; imf14.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=QWTuhSLR; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf14.hostedemail.com: domain of nphamcs@gmail.com designates 209.85.214.175 as permitted sender) smtp.mailfrom=nphamcs@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1668703122; a=rsa-sha256; cv=none; b=I3cpSPn2x75Fy59lvm+Q4g4iJ7pYcXzAbhWJGDQY/kpOo84nJcylnmsDDlku+eji1qCld2 vi7QJ7hbjZXGqSeDt+E0wQ/eDr+gNMIUASvnm/78bGAfLLYK4Lt1mhkOa9Fe+K1EEguByd gVzo1kGEUI+0aR8FCXMEXdGZA8URb1c= X-Rspam-User: X-Stat-Signature: 7xdcrr4zrq8wmfgr6hiexdi7cn9d47w9 X-Rspamd-Queue-Id: 03A1B100013 Authentication-Results: imf14.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=QWTuhSLR; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf14.hostedemail.com: domain of nphamcs@gmail.com designates 209.85.214.175 as permitted sender) smtp.mailfrom=nphamcs@gmail.com X-Rspamd-Server: rspam07 X-HE-Tag: 1668703121-367340 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: Changelog: v4: * Wrap the new LRU logic in CONFIG_ZPOOL (patch 3). (suggested by Minchan Kim) v3: * Set pool->ops = NULL when pool->zpool_ops is null (patch 4). * Stop holding pool's lock when calling lock_zspage() (patch 5). (suggested by Sergey Senozhatsky) * Stop holding pool's lock when checking pool->ops and retries. (patch 5) (suggested by Sergey Senozhatsky) * Fix formatting issues (.shrink, extra spaces in casting removed). (patch 5) (suggested by Sergey Senozhatsky) v2: * Add missing CONFIG_ZPOOL ifdefs (patch 5) (detected by kernel test robot). Unlike other zswap's allocators such as zbud or z3fold, zsmalloc currently lacks the writeback mechanism. This means that when the zswap pool is full, it will simply reject further allocations, and the pages will be written directly to swap. This series of patches implements writeback for zsmalloc. When the zswap pool becomes full, zsmalloc will attempt to evict all the compressed objects in the least-recently used zspages. There are 5 patches in this series: Johannes Weiner (1): zswap: fix writeback lock ordering for zsmalloc Nhat Pham (4): zsmalloc: Consolidate zs_pool's migrate_lock and size_class's locks zsmalloc: Add a LRU to zs_pool to keep track of zspages in LRU order zsmalloc: Add ops fields to zs_pool to store evict handlers zsmalloc: Implement writeback mechanism for zsmalloc mm/zsmalloc.c | 359 +++++++++++++++++++++++++++++++++++++++++--------- mm/zswap.c | 37 +++--- 2 files changed, 315 insertions(+), 81 deletions(-) --- 2.30.2