From patchwork Fri Feb 21 09:38:01 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sergey Senozhatsky X-Patchwork-Id: 13985084 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 85EB5C021AA for ; Fri, 21 Feb 2025 09:39:31 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 1A3B7280007; Fri, 21 Feb 2025 04:39:31 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 15403280004; Fri, 21 Feb 2025 04:39:31 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id F360E280007; Fri, 21 Feb 2025 04:39:30 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id D43CB280004 for ; Fri, 21 Feb 2025 04:39:30 -0500 (EST) Received: from smtpin16.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 8A600140308 for ; Fri, 21 Feb 2025 09:39:30 +0000 (UTC) X-FDA: 83143454100.16.23AAAD1 Received: from mail-pj1-f46.google.com (mail-pj1-f46.google.com [209.85.216.46]) by imf07.hostedemail.com (Postfix) with ESMTP id A4F1A40007 for ; Fri, 21 Feb 2025 09:39:28 +0000 (UTC) Authentication-Results: imf07.hostedemail.com; dkim=pass header.d=chromium.org header.s=google header.b=GdZNhQel; dmarc=pass (policy=none) header.from=chromium.org; spf=pass (imf07.hostedemail.com: domain of senozhatsky@chromium.org designates 209.85.216.46 as permitted sender) smtp.mailfrom=senozhatsky@chromium.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1740130768; a=rsa-sha256; cv=none; b=d6B+SD2Pc4YZ0UgPBS2QNMvFuHLUSPC7DdCJSyjTjoWiggqB1DMnL849cCThDmu22mUW0A A+kj/yYk8MY1P17rG0P6p6oMgDcvKx+CwhbWzn9gaLXFYx1Yxtr04vhdOrAqWeUwasdSLr K6Tt7UKUnf5cGPM9elOZXsLh93gvI/Y= ARC-Authentication-Results: i=1; imf07.hostedemail.com; dkim=pass header.d=chromium.org header.s=google header.b=GdZNhQel; dmarc=pass (policy=none) header.from=chromium.org; spf=pass (imf07.hostedemail.com: domain of senozhatsky@chromium.org designates 209.85.216.46 as permitted sender) smtp.mailfrom=senozhatsky@chromium.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1740130768; 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=6Ti7CmEaorHMBg5DWvmUEjK7cf0LUhuuwHacW6S7Q+w=; b=RRi1iUL6kuAVAplvz27ieYAve8TdIYAxXL9senhUc8otpRS8QqhkX+APt5deb3tjgasi8Z o8nsU/EaxogVtI3c10AzfpKruW26SeDUlLeo6CTalTcJ2efsynk8ZoXqGgqIIuBN17gBUO KeCI43ZimMXWmWHShNp11sP5d2tKQH4= Received: by mail-pj1-f46.google.com with SMTP id 98e67ed59e1d1-2fa5af6d743so3036905a91.3 for ; Fri, 21 Feb 2025 01:39:28 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1740130767; x=1740735567; 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=6Ti7CmEaorHMBg5DWvmUEjK7cf0LUhuuwHacW6S7Q+w=; b=GdZNhQelpN3eCP2ICA/TGSTk70j0+p8BOH/OFi5OX8/5Nj7AXMAal6qbzAkxebo+g4 nsJtlP0CPbwk4qACgO9ncp0H5vzlbEY/a4VqE/QUApRSP9oBJEbIF3yktzlSEiyEKHaM Te0uwO2Gi3BtNj0fPWmmpUrX9R40+XVZLTqkI= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740130767; x=1740735567; 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=6Ti7CmEaorHMBg5DWvmUEjK7cf0LUhuuwHacW6S7Q+w=; b=cwwcHT0u1l4kaKULy8nEJmPj5ll6LLECOf9Tfn6uPzmeo8A0s1tcn8RKU+SwE6qPzN yJUGSYxZgkLHbi7Ar8DWU3wPDHyxZQDnSm2a5pb3Zffzn2UJEaEQC1bs0DjQWquDvs2G RBHnuWuREFNwe6ajn8cCRHpc8PS7MiQHGwJtZ06OdSZeYeVNdV9Nfoy0Z9wOvFeVo58j 6FTbQ8i6aNbC9BmZ+Qm+AJ3u6Y6LAhxMvnSohK6Oppn0fhvOI2RKqaIXVLtkoojHoTa3 Nv+xVip/tsNlLH5g3raQMXS3FpnqXDNVk8VXCvolj7xOH6KH6trd5x7JrjDjf/pqB84T kQaw== X-Forwarded-Encrypted: i=1; AJvYcCX1+bwYIxsg5YVjF1spt0o8PLg5VxJfeVgt3hXwjk3Aw2gTdGLCyRkq8QOw2uiZ6Xts68qPm8hUKg==@kvack.org X-Gm-Message-State: AOJu0Yxm8NvaJdVByF9GQQ4eumQk4hxpPMPtx6439HjEeI3MFop0szLz S3Efufjv1eCQ3ST2u2yAWzR/b6O9MWINOXetPulHaW1yjCp/gg8AhmhM6dQpCTPBfIS5gqfT7a4 = X-Gm-Gg: ASbGncuoje54n5TuXw0IOSr6pKe42bzLFGajAUOHcWYou6mHQ+3txyJ0wn0NS1kz+n/ xGObJdIGKaRd+bX4S/vKVM1uRzScEXE7vWct7Dzi2+1JZ537IrI0UTqFcXCfkiRNZaHdA5embK8 UsG7FrdQSSwX38zHgXs7Gk7PotXIWdHkMTCqq24Rn+6lkkadLXEIZxn8yl0Akj1/TpmajNfDJjN ZRe7huS47Lwy3NeZZOE1nOUKfzscOIdEdl4jRiB/4SPv3tgy45PsU4SbCUN7cXLJLPFddRRknY8 V5gO7QzigNNS9T3twbeYc6V8gnU= X-Google-Smtp-Source: AGHT+IFkEw5rhjwVGmuiSJO9ZqK4LoqieklxjbVlzdvGmp36x+X05fC+JwKkd7RRpGwQHuo2CguWWw== X-Received: by 2002:a17:90b:5303:b0:2fa:1a8a:cfe8 with SMTP id 98e67ed59e1d1-2fce7b3ad90mr4368050a91.29.1740130767623; Fri, 21 Feb 2025 01:39:27 -0800 (PST) Received: from localhost ([2401:fa00:8f:203:f987:e1e:3dbb:2191]) by smtp.gmail.com with UTF8SMTPSA id 98e67ed59e1d1-2fceb05f715sm900785a91.24.2025.02.21.01.39.25 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 21 Feb 2025 01:39:27 -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 v7 08/17] zram: filter out recomp targets based on priority Date: Fri, 21 Feb 2025 18:38:01 +0900 Message-ID: <20250221093832.1949691-9-senozhatsky@chromium.org> X-Mailer: git-send-email 2.48.1.601.g30ceb7b040-goog In-Reply-To: <20250221093832.1949691-1-senozhatsky@chromium.org> References: <20250221093832.1949691-1-senozhatsky@chromium.org> MIME-Version: 1.0 X-Rspam-User: X-Rspamd-Queue-Id: A4F1A40007 X-Rspamd-Server: rspam12 X-Stat-Signature: i4fxwtkizjixhkuspjg4biy5ds6d3brx X-HE-Tag: 1740130768-296195 X-HE-Meta: U2FsdGVkX1+/L1Fh8gJTgcqYUYYP26gup9s2mt74vUeumiatCAaUcdqJf/v9OJKvXh4NICGFcypfnSytBOdR8X5NV8QXh+/hLdj7eC0gaO1EiMuE4uHMiAt9XtAKQHVVEi6Z9r2P0sY92qRdVGfv/fj0rXj7+KeJfptshVjGNDZfgnF1t48By9DtvYXGOMJ4MFynyGQXsbBxuW93sm876IfGChcVbiPnbadGDIrh0CqZGXiIHx2JAHESTWBsNARrqWdIqDCesiWHG9/fmPjzWvFW6+Z+Fy4bAB78NzGnXpxke6RsisAamXe6dArWc8xwbNMXehcinm8uBIexi1xELbsl6jrodlnSOIU5LfqasmhsF9RGx4f57QzL3f7ztbc0h8tsZifZi3a4TS7+AXHbC4AZf0VsgwnFWiypDs2cEV0/jSK+tB51YAJ6HN2qPv4ECxZR5G8+ahpyZ4oPgNoZ2DVviIVNmZ+G4JseJRpeMxmUfj4LJxVg6bbWXa3s2bFSO+dpDjK+4sHZfxSFwypNYGpqQ4Gi8WguQGCxFySEEk0zMYUExdhnktNvPNvpQ7giNL7F1pVzeZ3r+FjgH76ZIKnNS15qPORWZFRRhNOGQyJCl2L9Sy3nUKo/i+6wg+PcLLOMY3YLGZb+phHvA86SW4GRsvX6wgu7kxuLoYBDN0Yt7wK0KioSILnPEtojAnv73GrkF2IeOJAL06+MldcE09mvh9Md3DpAWnCY3eegWezi4fxPt89zkd/YJxmLhlAmaIyFYi2vUIgH1BoCkK7GOudjHYrJtky2229zWbsN6l13n+Ce4bBVQ33YpLnySFVTCNPdsUe1aiG0o6IQQVsC8MFhplnGysXfXBfp+pTgIpflC+9zEJqnlYP4WXuKSf2E13vQHlTG7mL+jxRawODe7P3QHZjv+Ki3jxZnW+UEg6mBKC7Rd5b9FocJWpLoJUqZgx4zlkTZ77Dmw8FBIjF EW68B1OD J6kK6Vy3bsjAU0yI30nh+Pkw6/TuWXZNJDyIv+pl6fzZOTl4KTaB/4AY8nZ3ibsSXQXLk/+PIJrzh5hwjf1EsccpydXWQrrj6p+TUjPhD5Y84QLSFYv3coqhZgDfbEvXwDRI+AZzBBIlZmEJUjpzV7BQCcVkm1BaFUMKyus+Y8KyIViFeIw375uM7sdw0yu0fBX6v5Egogsqia0+EL8D3H9TeNJPv8WGKbPM/VIjE8yfB0n91zGSHMt2Y9BkatFy5fIRPMXoxvalCEMPFUsdgNt7ndm8ve5mTZ2XSQM+hjbN3s6I9BsaT8SuCnA== 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 a886827f0b3c..a1880e621895 100644 --- a/drivers/block/zram/zram_drv.c +++ b/drivers/block/zram/zram_drv.c @@ -1827,7 +1827,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; @@ -1859,6 +1859,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; @@ -1915,6 +1919,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. @@ -1923,13 +1937,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); @@ -2154,7 +2161,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))) {