From patchwork Sat Nov 19 00:15:30 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nhat Pham X-Patchwork-Id: 13049321 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 022CBC433FE for ; Sat, 19 Nov 2022 00:15:39 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 91E3F6B0071; Fri, 18 Nov 2022 19:15:39 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 8CE996B0072; Fri, 18 Nov 2022 19:15:39 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 76FE28E0001; Fri, 18 Nov 2022 19:15:39 -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 66D4D6B0071 for ; Fri, 18 Nov 2022 19:15:39 -0500 (EST) Received: from smtpin30.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 3732E1203D3 for ; Sat, 19 Nov 2022 00:15:39 +0000 (UTC) X-FDA: 80148273198.30.03FC93B Received: from mail-pj1-f42.google.com (mail-pj1-f42.google.com [209.85.216.42]) by imf02.hostedemail.com (Postfix) with ESMTP id BC22B80006 for ; Sat, 19 Nov 2022 00:15:38 +0000 (UTC) Received: by mail-pj1-f42.google.com with SMTP id a22-20020a17090a6d9600b0021896eb5554so733340pjk.1 for ; Fri, 18 Nov 2022 16:15:38 -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=l0d0+INXxLonVlNVaXxtrteVyMG4KiznbapsCu7BEf8=; b=JEAySdKw7SYVBGVsVWVy4HVnJrk/5blfpJoyj7CJYYjTg5Oiol9XaYbFlHCGCqzs6D Q+zjqQHcr9VkaYm33ezAsm/Jd4B6FKLJdZP2GitZffxkMhj3J6SbzRv8oIvn7D50t+YZ VoRkBYbvfIkE+cOrvqQ11L+AhoBaskC4Eg4eYc1pFZ4LPqUdp/DShteRFXYufw3ye4Jy eFwYEjQxi6XBmCSoh3IxXFtHcptiAG/clonLFRxHTkENq1pnAAhKD5mW18EQOIheg03g Tqrx7bv8xjWm2geZJ9o+wY2ssMiZ3DJLiKgCs3oAkdEXHejriKHZUnyY1yaVNHs9Cz+F CTOg== 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=l0d0+INXxLonVlNVaXxtrteVyMG4KiznbapsCu7BEf8=; b=vkNd5AwdVcoR0eCUsuhj7dLRqdJuRRB6bY3/LSVZMY0d6vBWtCNENS6ENVgF9ucVzt 8tXyOtlFdiweyM+DV+6EGz05uns9U3O4xvHDN+GOXeOOEMqLOIAy/h1P3Zz3lJmpW10y DI0+YJ7b4ndxINK8M174M6eM3Rt37/+8NJq9Cv9t/fqnKAnwJ1xbn8fdWVvNgbNb6ie+ f+oc5UV+srAYcflMt4jeCUj3DW4Ph0egNJjdMH5QGqT3gG32uBZW/rbBK/yAM7Lpa447 vkQ0uX4kHzbCLBNz6fYFckyUwFOcNAi1NLccDj/a5KQPQ5sRUGU2rREDPfPjicKPCjLF EDeg== X-Gm-Message-State: ANoB5pkwIpztec/oo+PbYXmeBzioQPqnsSKnqYg4WelqjaNAAZv/79Uw 2raRCUZ6gPiW6V0oCyaPF1s= X-Google-Smtp-Source: AA0mqf7+KhbpxRUPQz21CGAUNaV7cv1+U77vIPgX58+BaO6HQjXYrsNkhXux0inUFTKsJu9rQBTKaA== X-Received: by 2002:a17:902:f707:b0:176:b0ce:3472 with SMTP id h7-20020a170902f70700b00176b0ce3472mr1660064plo.169.1668816937584; Fri, 18 Nov 2022 16:15:37 -0800 (PST) Received: from localhost (fwdproxy-prn-012.fbsv.net. [2a03:2880:ff:c::face:b00c]) by smtp.gmail.com with ESMTPSA id b15-20020a1709027e0f00b001869394a372sm4285518plm.201.2022.11.18.16.15.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 18 Nov 2022 16:15:37 -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 v6 0/6] Implement writeback for zsmalloc Date: Fri, 18 Nov 2022 16:15:30 -0800 Message-Id: <20221119001536.2086599-1-nphamcs@gmail.com> X-Mailer: git-send-email 2.30.2 MIME-Version: 1.0 ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1668816938; a=rsa-sha256; cv=none; b=kajksWBMWJr2qeMEuUVvPkwJ0aELu8IAL0WnjiFDaLORmel0iDVLY7rlsivX2ONRLaz4LF k+O5jWDDlrRFNIcsU5u9TlkQ8RE0FyG6jbag5I4PnlnyRjZA48coISC9qDHjQeBdZyIwnG 9leRo9Nubr/vk5C8hOckPDIvDWf3hXI= ARC-Authentication-Results: i=1; imf02.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=JEAySdKw; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf02.hostedemail.com: domain of nphamcs@gmail.com designates 209.85.216.42 as permitted sender) smtp.mailfrom=nphamcs@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1668816938; 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=l0d0+INXxLonVlNVaXxtrteVyMG4KiznbapsCu7BEf8=; b=R2kO7PoIIgqZ1svF6kZ7YgbQXpfD6cyVWb+m8OynRzmLqmPETkFzrfsJFWSzgIIfvCxxLl YgIje4i0WlBe8/vySJIq50y8gfaW48MZZhgkreWfmLnCO1zlEMRZ5jI8hxknHnLMYE82cH qgeGBqPd0fdIx9WQt250bzqnJzXUTvM= X-Rspam-User: X-Rspamd-Server: rspam08 X-Rspamd-Queue-Id: BC22B80006 Authentication-Results: imf02.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=JEAySdKw; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf02.hostedemail.com: domain of nphamcs@gmail.com designates 209.85.216.42 as permitted sender) smtp.mailfrom=nphamcs@gmail.com X-Stat-Signature: xarabw66it563mo3xo575k7gkt3m8wkr X-HE-Tag: 1668816938-171225 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: v6: * Move the move-to-front logic into zs_map_object (patch 4) (suggested by Minchan Kim). * Small clean up for free_zspage at free_handles() call site (patch 6) (suggested by Minchan Kim). v5: * Add a new patch that eliminates unused code in zpool and simplify the logic for storing evict handler in zbud/z3fold (patch 2) * Remove redudant fields in zs_pool (previously required by zpool) (patch 3) * Wrap under_reclaim and deferred handle freeing logic in CONFIG_ZPOOL (patch 6) (suggested by Minchan Kim) * Move a small piece of refactoring from patch 6 to patch 4. 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 6 patches in this series: Johannes Weiner (2): zswap: fix writeback lock ordering for zsmalloc zpool: clean out dead code 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 zpool_ops field to zs_pool to store evict handlers zsmalloc: Implement writeback mechanism for zsmalloc mm/z3fold.c | 36 +----- mm/zbud.c | 32 +---- mm/zpool.c | 10 +- mm/zsmalloc.c | 325 ++++++++++++++++++++++++++++++++++++++++---------- mm/zswap.c | 37 +++--- 5 files changed, 295 insertions(+), 145 deletions(-) --- 2.30.2