From patchwork Thu Feb 27 04:35:27 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sergey Senozhatsky X-Patchwork-Id: 13993739 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 5A422C197BF for ; Thu, 27 Feb 2025 04:37:24 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id DC15528000B; Wed, 26 Feb 2025 23:37:23 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id D7099280005; Wed, 26 Feb 2025 23:37:23 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id BC2D428000B; Wed, 26 Feb 2025 23:37:23 -0500 (EST) 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 9DB38280005 for ; Wed, 26 Feb 2025 23:37:23 -0500 (EST) Received: from smtpin13.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 60C6212027C for ; Thu, 27 Feb 2025 04:37:23 +0000 (UTC) X-FDA: 83164465566.13.A81B1F6 Received: from mail-pl1-f173.google.com (mail-pl1-f173.google.com [209.85.214.173]) by imf09.hostedemail.com (Postfix) with ESMTP id 81DA2140002 for ; Thu, 27 Feb 2025 04:37:21 +0000 (UTC) Authentication-Results: imf09.hostedemail.com; dkim=pass header.d=chromium.org header.s=google header.b=k4uHkA26; spf=pass (imf09.hostedemail.com: domain of senozhatsky@chromium.org designates 209.85.214.173 as permitted sender) smtp.mailfrom=senozhatsky@chromium.org; dmarc=pass (policy=none) header.from=chromium.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1740631041; 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:in-reply-to:references:references:dkim-signature; bh=k2tj7S14ByHudFFBWtU70rdMhsyqSn6b6QKduoDJaoI=; b=LPgzMVbCpc1153i63s57uV2EDUe9Cti799eElW5eYA3LKzuDNro7wPM7Iu5vSyJ4Db0nT3 GgbYr1elKJGcdX+I9CDXiMqQFvdO5TkXxcf0923HKSyJiFKQlBd4yYbUcbqdkpB1InCXcB JS/nliCpY5m+G+mpKNHdTiGOgsrQwfk= ARC-Authentication-Results: i=1; imf09.hostedemail.com; dkim=pass header.d=chromium.org header.s=google header.b=k4uHkA26; spf=pass (imf09.hostedemail.com: domain of senozhatsky@chromium.org designates 209.85.214.173 as permitted sender) smtp.mailfrom=senozhatsky@chromium.org; dmarc=pass (policy=none) header.from=chromium.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1740631041; a=rsa-sha256; cv=none; b=smG+UlgD2c8n52r+B8/mdu5eS2wjYhl6+PDIUbHfCTKrlv3riNnZwfJmR5YiiPBDDsd7JI AYyaKEJj+S2zypzOsX5Wfh+Eyjd5EAgQpbMhuqRyapnzM5oQyh+Z9sqBbA++6IOzRsCzx8 XSctcHkvlRLkL9Rlbh4OY/KXSlw5ALE= Received: by mail-pl1-f173.google.com with SMTP id d9443c01a7336-22113560c57so8812405ad.2 for ; Wed, 26 Feb 2025 20:37:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1740631040; x=1741235840; darn=kvack.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=k2tj7S14ByHudFFBWtU70rdMhsyqSn6b6QKduoDJaoI=; b=k4uHkA26Y+pyyb5fVnlYfh94fKDG19roU3NjyDMnmnc8TUasKy2k+S+Tu0WVc91O2f DBWAb7xbScC4m/7vRgDJ6HAVBxMwP533QXuBG0Le02eEJtCPiZx5ouW4RpmANS0MikQ5 Rr61/qb9yIXK8ZnEMKe/TnhQpyFzGjjVsSmJM= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740631040; x=1741235840; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=k2tj7S14ByHudFFBWtU70rdMhsyqSn6b6QKduoDJaoI=; b=KYp4ROrVH+KFAU75UpCWEdOWCZDe5xEvjM54EWkS7Wwq4G+aMLtcmMpaqJ3z4RmRVS 0NnYxPdgQpz0xc+nyYGaFIV0jhV3Sp6b31eLkiW5+6VuU1NbUPS2ut0+AOCAnM6KmHlp HpbTOoH1ql28YcUCGw2LycshTC7Znok/4pKnDNGA0caMu7bJggjCyUtIHqep9WmZJF7m nEKl6T9463prpCfCS8h4nK4hvgWKw9Wt0dUVvE9tQwJOkgoRZiEuWliiKk+OlGirjc4/ XR8zd7na6Dqjn+Ym1mQCI5j3uWeYjM4SuIhKLFLiwdMbmB7lraRkbELmwoDEyQ2O522i 4pjw== X-Forwarded-Encrypted: i=1; AJvYcCVcdOLMuv7h6Tfw76dgbcRwVa/XbMPkgzvIG+h73gAL3pRrdCGrMW6DCuTM+GOQKpag/ttq9JFsDA==@kvack.org X-Gm-Message-State: AOJu0Yx/UOCYAAT55psGOkzA787BN9gQiT5TiCTkVOMf2r4plpBZ0H+5 EnBx+8YjFx4x2u0PvdwYCtqvEddh+a2E2QavmhMMCBLQyYa4Z/xNhPFBf17wmA== X-Gm-Gg: ASbGncsvhGMkwBZiM9O8WtUEmWCEUgt67aA5r13Ju8NZbxXrpM+nnC5lqorB9qNKk2F gW7YPtP9w4FGhmKCQmV5Ql7V59fE+uaJ9A6/m4C84zlzp17j6PxymW45QGZNkVXf2PrtslP6148 PdVIw0snm1Ud1L7CjyIn811oz/3ojlEftsxL3/Wcz6y2La2BxyQhOKqrHG6rgQOke0/3rFG0DN+ rv3EC/1GM/06jH75JSiAE2clyRY7k1GT7K1xSrGAykbmtnfuCAqggHmod7PBh0xO9oE7zT6Ak3I I0QJIMsbs1LGDHvhOXwv2DZfIB5F X-Google-Smtp-Source: AGHT+IEN+RE7KRyg5caAuRJqhyxwCNu+Sch604nCRIaPUWr0NHMHIZpiZPkRYwWAzDLUylZbTZZtGw== X-Received: by 2002:a17:902:d4cd:b0:220:f795:5f14 with SMTP id d9443c01a7336-221a10de0c0mr360128185ad.27.1740631040453; Wed, 26 Feb 2025 20:37:20 -0800 (PST) Received: from localhost ([2401:fa00:8f:203:a9c0:1bc1:74e3:3e31]) by smtp.gmail.com with UTF8SMTPSA id d9443c01a7336-223501fb1f7sm5039955ad.98.2025.02.26.20.37.17 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 26 Feb 2025 20:37:20 -0800 (PST) From: Sergey Senozhatsky To: Andrew Morton Cc: Yosry Ahmed , Hillf Danton , Kairui Song , Sebastian Andrzej Siewior , Minchan Kim , linux-mm@kvack.org, linux-kernel@vger.kernel.org, Sergey Senozhatsky Subject: [PATCH v9 09/19] zram: filter out recomp targets based on priority Date: Thu, 27 Feb 2025 13:35:27 +0900 Message-ID: <20250227043618.88380-10-senozhatsky@chromium.org> X-Mailer: git-send-email 2.48.1.658.g4767266eb4-goog In-Reply-To: <20250227043618.88380-1-senozhatsky@chromium.org> References: <20250227043618.88380-1-senozhatsky@chromium.org> MIME-Version: 1.0 X-Rspam-User: X-Stat-Signature: wuggb9dmyx74ykbrrhgcngytttqzdgjx X-Rspamd-Server: rspam05 X-Rspamd-Queue-Id: 81DA2140002 X-HE-Tag: 1740631041-471164 X-HE-Meta: U2FsdGVkX1+ESkcCfaXTIAwU5xXLRG9aMrd9QKvYmMEWNXoGbkHv6xBXL95xmOX+WzVi49yVWc/+lBKRUzkfa3wn22QVVlOChCzhKX0pNG0tEUq8ZrAclxiW17r8BykpwiIuClCiBQDGtOLkBMqycZqIFp8l091lC9RVz0zOObnOUllSYmnQLqXCuYCACVZlvu5xz4VjE03yN8VePqOv1k2dmKiNhku1HBbSqzfbK91nC4ZinPvlgcsTr0XtHLFh4atsOFWuNtMqe0c/qb/8+/DSifH7f/c/C3CM8k99BiZMLeC8IBHwGHOOu1BxbNU3Znn+a8XdwiDtE86/1OVguAlohBEXEJprM6ko8OhSzZyIGzu/E9p4nbSE4r29AGiDrU2VUFZ/V7Am5EPEdZm3RQ208E2Ek6K0DCYrlisAycI/WQ5CPX4haLDY+Q4h5L2Ma0xm5L6Bd80xzgOQhgEJjQGUumeCEUp2wow8OViq4N2VkHIdcsj0/9jZtfcl1vBxS0r6Lxt3Aifmit7hgXIT2Q8qJqiNTAz/Fj8AGpUg1jgB6kW+cJmv84pDj/fDL5+eDxUyO/uUsN/JtKrkpStAGLqxR8E1dxstyTqM29w+PG1js0FVCjZSIUkQ3/OsUXQbK8n+EvjjNml5m2etMG52zyhOUJH/Z0N654WrOt1vOgQZgHq6J58maTxPqfLQhxwUdA/ztFzIpbj1/8WyAkYwTlbCAtgpBJbYm2ufW9mvsR38oxlEQ/M/OcqMNxdHVtno1lxxvEXwLsh2XlhunkngG6dPbQemz5FHfGredUCkwIKGyVvK0KkKG89/863/+SUaX8qy0a8Uf6jdBBQFp1YXPwCcz2kt2ERK+zykPoH5RBqN7o0oGVAEpaLbgJ263u19u1vjjdDrFC1S92ePzqHtsr+3hty2Ef1aPldFJJNU++rY/GXz3WssvrMQOuCXKI0rP+dUetSKCVs+zX7Piub pSFEmtNY 8i9UAcincEXQJ8J4GYsiwqvBt7S0p6+iGycWK7c8sTIg2D01/ibyIUdg6zslY3zWloyOFe0+wxAAZf2u90UfdqCV7CrjtAXobLgZxYhKbo33vIHOurgR1lnA3h084h2vaMxEExfpCM4CwA6S19rjPm96S73L/wRFDMk2AWVbSVs6MkoJObAReBa87DUDE6nw1642iaK8dbfqG4doAdmnSZNclffbAztS3VVWNujrjY28qhhd1mNr9yext+L8UT9Y9e7Y97Lex9qY2vFqDDOonJZTz8gNUXaYEwlJZiVpXiBX3S52X3xsHDW5lrg== 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: Do no select for post processing slots that are already compressed with same or higher priority compression algorithm. This should save some memory, as previously we would still put those entries into corresponding post-processing buckets and filter them out later in recompress_slot(). Signed-off-by: Sergey Senozhatsky --- drivers/block/zram/zram_drv.c | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/drivers/block/zram/zram_drv.c b/drivers/block/zram/zram_drv.c index 12b99a557667..3a23dfed9542 100644 --- a/drivers/block/zram/zram_drv.c +++ b/drivers/block/zram/zram_drv.c @@ -1823,7 +1823,7 @@ static int zram_bvec_write(struct zram *zram, struct bio_vec *bvec, #define RECOMPRESS_IDLE (1 << 0) #define RECOMPRESS_HUGE (1 << 1) -static int scan_slots_for_recompress(struct zram *zram, u32 mode, +static int scan_slots_for_recompress(struct zram *zram, u32 mode, u32 prio_max, struct zram_pp_ctl *ctl) { unsigned long nr_pages = zram->disksize >> PAGE_SHIFT; @@ -1855,6 +1855,10 @@ static int scan_slots_for_recompress(struct zram *zram, u32 mode, zram_test_flag(zram, index, ZRAM_INCOMPRESSIBLE)) goto next; + /* Already compressed with same of higher priority */ + if (zram_get_priority(zram, index) + 1 >= prio_max) + goto next; + pps->index = index; place_pp_slot(zram, ctl, pps); pps = NULL; @@ -1911,6 +1915,16 @@ static int recompress_slot(struct zram *zram, u32 index, struct page *page, zram_clear_flag(zram, index, ZRAM_IDLE); class_index_old = zs_lookup_class_index(zram->mem_pool, comp_len_old); + + prio = max(prio, zram_get_priority(zram, index) + 1); + /* + * Recompression slots scan should not select slots that are + * already compressed with a higher priority algorithm, but + * just in case + */ + if (prio >= prio_max) + return 0; + /* * Iterate the secondary comp algorithms list (in order of priority) * and try to recompress the page. @@ -1919,13 +1933,6 @@ static int recompress_slot(struct zram *zram, u32 index, struct page *page, if (!zram->comps[prio]) continue; - /* - * Skip if the object is already re-compressed with a higher - * priority algorithm (or same algorithm). - */ - if (prio <= zram_get_priority(zram, index)) - continue; - num_recomps++; zstrm = zcomp_stream_get(zram->comps[prio]); src = kmap_local_page(page); @@ -2150,7 +2157,7 @@ static ssize_t recompress_store(struct device *dev, goto release_init_lock; } - scan_slots_for_recompress(zram, mode, ctl); + scan_slots_for_recompress(zram, mode, prio_max, ctl); ret = len; while ((pps = select_pp_slot(ctl))) {