From patchwork Mon Mar 3 02:03:18 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sergey Senozhatsky X-Patchwork-Id: 13998059 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 8573AC282C6 for ; Mon, 3 Mar 2025 02:25:22 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 16DE428000A; Sun, 2 Mar 2025 21:25:22 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 0F672280006; Sun, 2 Mar 2025 21:25:22 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id E8B9F28000A; Sun, 2 Mar 2025 21:25:21 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id C2FC7280006 for ; Sun, 2 Mar 2025 21:25:21 -0500 (EST) Received: from smtpin15.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 804EC12078E for ; Mon, 3 Mar 2025 02:25:21 +0000 (UTC) X-FDA: 83178648042.15.90A6873 Received: from mail-pl1-f178.google.com (mail-pl1-f178.google.com [209.85.214.178]) by imf20.hostedemail.com (Postfix) with ESMTP id A27591C000E for ; Mon, 3 Mar 2025 02:25:19 +0000 (UTC) Authentication-Results: imf20.hostedemail.com; dkim=pass header.d=chromium.org header.s=google header.b=WOxD2Dop; spf=pass (imf20.hostedemail.com: domain of senozhatsky@chromium.org designates 209.85.214.178 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=1740968719; 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=NTrj6AIBGg3fen5fqcQqiq+dr13fIgG4uK8Ep+QAN48=; b=451Nbp3uKo0XNccXy25yAQ8uDgP8KLGTUNUIgCoGpP9idT0aVH3RSq6MMqDHK0EQWdgfYC sowkMyKOutUda0IpxnU0w7aRW9yuh8T9YOaO3QqDKyUJvt0b9FBAFQZdMzklkUkUgXQlW+ RM2HuYN+VVuGtVyY026OCxK+J1Rt8AE= ARC-Authentication-Results: i=1; imf20.hostedemail.com; dkim=pass header.d=chromium.org header.s=google header.b=WOxD2Dop; spf=pass (imf20.hostedemail.com: domain of senozhatsky@chromium.org designates 209.85.214.178 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=1740968719; a=rsa-sha256; cv=none; b=WuiLn8s4PBNFOfnGqukta9N5cK7PDjdf0uQTz1ah/2r7SQOlm8RQPk9M2B+2ZQOOlU0Zo7 Forg6gqZt4mf3crx+P8CSVSotlc9+/VVkk5Q+39aleht0JO1r8lvVPMs8Dme0GaSBWyOtV 6/6g9pVi5ZLifI4jZkT0VWlrXIa77+E= Received: by mail-pl1-f178.google.com with SMTP id d9443c01a7336-22355618fd9so63391285ad.3 for ; Sun, 02 Mar 2025 18:25:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1740968718; x=1741573518; 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=NTrj6AIBGg3fen5fqcQqiq+dr13fIgG4uK8Ep+QAN48=; b=WOxD2DopHzR+yNhyMF5cpHgb6Pwkrxk9AUhBPycSsJk09p4N9h3u+UQRfsDsCO80YM 8tXaqrtvIuLFi+djO2elwnS98u7O5NWTQpQsxeezaF2tzHhx6TYU+KprPz4kdsWj9vkm QH8EpNwpBEW3Fptn/byQd4A7p6jPB26VQvqFY= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740968718; x=1741573518; 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=NTrj6AIBGg3fen5fqcQqiq+dr13fIgG4uK8Ep+QAN48=; b=udw2o6P0WZdBcOHL9cEITiq0MetSE799V3+x2/f7maauVr8/pxmnoSK/+HCUy0hEKW WLuE3rfMl4eopu+ob2+1zZ15dBrb0VvkGR2q3MOpLaE4N+mwe748zuZsPGk6bcKHyMUT /06HuM80CjgsB2u/u6OzDKhn2bYdQSGG4DQYP1PSvT867kmjsgVMJpDsNrLKadxEqhi8 ClD5D/YO+m+oOMAm8dW9JFGXB+FcYupvKTkrntVJNBdC+Q2N0zO+hxgMu5WcFGyxL6aZ W7I430dAuEVKu+XHdQb96IhlzuXlJAeWf9tW946x1azgRgYYZs+cT1SgCEie1re4JrqG iLEA== X-Forwarded-Encrypted: i=1; AJvYcCUYgFktw8TdZZIrYC2pUPLiQQtgYIlfmihD48qeVCUaylIu81Cun3KuxSqiEGE+zEDpFK9Vj0ebKg==@kvack.org X-Gm-Message-State: AOJu0YxCLCkSgcYo7tVsxGqOb9CbLLL6vtMaP/iZ2H75QKt0bJN0GVC+ Bv5t24iQLFJrv3iwg9kGDvRWknCQFvhK7CgdQ97bU34AQ6F8TcYNVyexM8Ns4w== X-Gm-Gg: ASbGncuU1rlFSgmixwdgv0EhH9L8mglx0+pK8xlQtanpz4pzL6ozt9s/YPjBl7zv5vR 7YlwzG8y0jXJ0RTtDQQmN/5+Xn4Rn9SbMNTIEtQDK4OYIrGBWPrXhFuxOA+Zpdz4uMXg0Ff1+bk p/AaH+8HfB95kQLCCaHrq0UIUS9FXTKQuAQ0HQkdtU4wkBE/EF7Vm4wMl0aZiOj7e4McqIVuvHV 9IMwb9S49fJRg5Twbmb8jPMixur+6fq4GQvZycudsf4cXKWDYK8Vu1UG+ajlXORAQqjKB/ifUbS z6c8dkh+TImghMy/zXFYsFUv3iPjO6oX4JgdACleCl9Q7xE= X-Google-Smtp-Source: AGHT+IH8tkcTWEOl7teGtIH3prNMr9e6TjPXzSkEQyQdyulF5O353ekND1QrhJUZq9VyBdS7SHU/9A== X-Received: by 2002:a05:6a00:4f96:b0:736:51ab:7ae1 with SMTP id d2e1a72fcca58-73651ab7b97mr3452819b3a.16.1740968718515; Sun, 02 Mar 2025 18:25:18 -0800 (PST) Received: from localhost ([2401:fa00:8f:203:1513:4f61:a4d3:b418]) by smtp.gmail.com with UTF8SMTPSA id d2e1a72fcca58-7363f62117asm2509047b3a.57.2025.03.02.18.25.16 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sun, 02 Mar 2025 18:25:18 -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 v10 09/19] zram: filter out recomp targets based on priority Date: Mon, 3 Mar 2025 11:03:18 +0900 Message-ID: <20250303022425.285971-10-senozhatsky@chromium.org> X-Mailer: git-send-email 2.48.1.711.g2feabab25a-goog In-Reply-To: <20250303022425.285971-1-senozhatsky@chromium.org> References: <20250303022425.285971-1-senozhatsky@chromium.org> MIME-Version: 1.0 X-Rspam-User: X-Stat-Signature: fg78ckr883egght1kw59iwt3cq7z4k6t X-Rspamd-Queue-Id: A27591C000E X-Rspamd-Server: rspam07 X-HE-Tag: 1740968719-716057 X-HE-Meta: U2FsdGVkX1/DkvvBwyEkQnFzIxJ2PG5GAu0aZx8MCyhQH3USfDXS0v7wALLzFTNZVYxrnf8ZSNUg7RssnbfZUWY99+lmD1sSnBZoE4MWaGL4TGPkVOZhZKSBtdfErArRoCTo2pRj+RLrHjYVln7BszAdf1U1qTRCvjOYwT0Dc0ZMacx5KgABjv9IXgzjJDKhxIz156c2Xq8bjFuBTnH/Au8ejHmuS3DOTbDY/li6FYSBHIQKwlmiqzarG+7eqImpM73dVuizRNnJ29v94XNTl/USLYzAaotkFiEIZSgoj6ck8iUIWoK/95UHZSzGu0RswRExxdJRmHYbR8U4WsDG5/nnriJr+HTMLVLI4Z+S6om7ucLH24Oasy0uwF85/4507BYcQL7tbw59eiJHkYeI37tw+jDcpAE3c9ImCDqHbbREpA9ovs4xo7EomOi98zaUerqCU5Zq3GfrKlgM+z6BZNL3WGoJSn3Sw7rSIgeauaF2lnnIVQymCOhiYkuGVj+zDfSyOaiRVAHeuQAngyK8BZ3ml8ht8SQH0sjWXLXIaZr7QnL4k4vc+ax+3mis48Pcto28ZBdPDwurJEU0Gk07ep4sfxYFN6zAm80uzEDcl718EMmv90Pe7BXpgj88F4TKmKJwp1zM7iwHxiNBhvRTU4uV0v2YREZlLfrte0oamX5fDv/HI8vbk4cInU6+5qQEVvWZcL64SGyb8gO6VfyLMqtgEfGsOf1DcFUoj48UuYI6u7I6VGQFgI0Te0iqgTuMFyjaCsmYEHKs+1LlHLYqD0omPQnAKnP7dxNeQS1MnWegeP8hBHAtaV79hX+TR96cPlQF7aVnzBAo/FaSvEMnELgIGXg7g4KW6U+r8bxqnIK4wlnW2aSiu/i3A8gNyfZAw5IvdBYQ+8LXaFAMMH6yc3amBZLsiGDe2kFKF/w1H9V7ycb814+oOrpVpwMZdym1dejypendW3J153y6rsc UfJUp8Uf fImbuJlTWAcJ5WZLQkkGsTKHrZu+sMhdmfc3TCwfFsU3CZob7u1jxWKMgee4AzcNRAVgKzh7EV39QadFq3zZrTMC7kM8BMjrcoQgg8M56MvS6aZSZcNptjQqfAhl0X9mwMKZpdfKt9gyyevUqqm3d7U01b+PDWNFkulmopQjxaS9J1DR8e0TUJAVfFaJ0EFbSi4R0+XrFYnMefXc9wJBwrQ7aZAeqbdu0ZZjsgfCIlbYgJs0HjI5zQ65yGfBQXNdUTSq0IdfGgr5FjlK6gnDYExAIs8UqxxMxJQJTWcdgi9z7SlAv6RLnebHX7g== 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 776c31606eec..6dee885bef9b 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))) {