From patchwork Fri Feb 14 04:50:20 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sergey Senozhatsky X-Patchwork-Id: 13974470 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 64DD1C02198 for ; Fri, 14 Feb 2025 04:53:06 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id EB1E06B009C; Thu, 13 Feb 2025 23:53:05 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id E3AC86B009D; Thu, 13 Feb 2025 23:53:05 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id CB43F280001; Thu, 13 Feb 2025 23:53:05 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id A5F4D6B009C for ; Thu, 13 Feb 2025 23:53:05 -0500 (EST) Received: from smtpin12.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 29C5981C46 for ; Fri, 14 Feb 2025 04:53:05 +0000 (UTC) X-FDA: 83117330730.12.B7C4B60 Received: from mail-pl1-f182.google.com (mail-pl1-f182.google.com [209.85.214.182]) by imf02.hostedemail.com (Postfix) with ESMTP id 3B78780004 for ; Fri, 14 Feb 2025 04:53:03 +0000 (UTC) Authentication-Results: imf02.hostedemail.com; dkim=pass header.d=chromium.org header.s=google header.b=jw0Qulpd; spf=pass (imf02.hostedemail.com: domain of senozhatsky@chromium.org designates 209.85.214.182 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=1739508783; 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=u8qIWvBqgXd04+Bt3tanZdpv0pd6FYzP6TsmdRGZtIY=; b=AOnmOn3vBJYqoM+ryrq5f3jB2AXo5O3UF1eCprg3jq/2KTlU7jEKT+c1g5TgSrBrz8xk67 joq/2SuLv/sirLfxOSSVYOzMgAdq649MVzY2ASA5mvpIOrnPkobACzz7nxhN+nEUao+Wds HRhRFhyKzwqJJJWZBeJfJzNU4ROjHSo= ARC-Authentication-Results: i=1; imf02.hostedemail.com; dkim=pass header.d=chromium.org header.s=google header.b=jw0Qulpd; spf=pass (imf02.hostedemail.com: domain of senozhatsky@chromium.org designates 209.85.214.182 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=1739508783; a=rsa-sha256; cv=none; b=KJmuaz+I9O/lMYIM4ISpL6W4DGfWxOmswUox/7MuAtvJwbWOuHFwVUZdaaaewedOIwNfIZ 9gfEIasNSfhh+uC32GH0cSLEe2XaoN1ggOegPRF2py10JAnIK8C7jWqBhbImdCy6iYzrxd KfcJUk/IvTpQhhlY28KO7/WKjiGj6rc= Received: by mail-pl1-f182.google.com with SMTP id d9443c01a7336-220c8f38febso28737515ad.2 for ; Thu, 13 Feb 2025 20:53:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1739508782; x=1740113582; 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=u8qIWvBqgXd04+Bt3tanZdpv0pd6FYzP6TsmdRGZtIY=; b=jw0QulpdsJXduAHW5J3V/TcDShsu064F/iRogsutF3fNbcEnvaMXfsUoggsxnp0elF G3rMe+4EzIpAiaKjgHr2RZYUzg3Mb3cIg+EMEGgSMzfF4EkP+rsTE9eSJXH+qcPLeyc2 T3b4WypeoN0ZEIlGEdbhFkC6dEwEOY33YtFfo= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739508782; x=1740113582; 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=u8qIWvBqgXd04+Bt3tanZdpv0pd6FYzP6TsmdRGZtIY=; b=a4a+dpt61ta4m6HBKHJFqmaT7utXhVggyqE+xXLA6eGjuDlTjD1RkMI1bgBT8oUSbr IovNuOM6XRHpvUJkLx9NcFh2V9jFqm7lKhmteMH4irZyN+u5M4k0QjzGOEtab140c2sw N53rHcqYbz//EcRabLF31EckaMzi1AA5H7HPbfFRVYRJmiOHhFxhdWvIXiCvQbQV5Ndd OgixNhdGNlzKnSaU62bJOF7uS7cIksduk2xII4jjTN0e6Fezy/YWXVNUmg8lYZ/jc9Ik +0/Nls2x64Xan6g1eWF2d3dpZvqhR3g2b7SEkEghpChIFiKJ7gwYlbitWQhbDnc5+vks T+IA== X-Forwarded-Encrypted: i=1; AJvYcCXXYW33lkUyu7OJMo7gEkRCmZpic7qHmFqBW/jzu6Y+dBM0ml7fO2DIIqU1zZGZXeVV3PzwMx3oQQ==@kvack.org X-Gm-Message-State: AOJu0YzR7VREPmRb7AEQkjQmHAwfncIaRpkdBx+yCpiapGPATqt7VK4c ICSMmBDygTXzmk9Xib2vCA6wKBFWQ2z8DEUYciUQtI1nYbd9MCONfrnwKy2dHg== X-Gm-Gg: ASbGncvppf2NM4Rz8qYVMwtgnefdXyuA0N4snYhOPMx3RtRiV6ivYo8i3GyEDWMeoBh e3syuajGzyyjZVrYhxqtDjIvPKmP85Gbg3xL4Vpnrt6XbJc5sVRuIV6VyvEdVsoFTseMh77zIj/ OxsAelSsnHW0cZFP/qxjuLczcSkwRuI1GJR1fZp8+16+fyojkS5sdoQRz8Zllp7T4mbmZHVhBIU WfVY1QLLYtXOtghDCuKawoKqVcXlxlOFV8QCE+MrjUbNvy58n/fRfA11KPMsu/rm276nmarmyoL XCS6kaIq1PRi0K86uw== X-Google-Smtp-Source: AGHT+IHUcQM2DJmewLKGuE+CMu76WyyV+1GS8gtwww+ICNVj3SW61vpHXjXYA/HCtx5vMpfKv1a5mQ== X-Received: by 2002:a17:902:f707:b0:216:725c:a137 with SMTP id d9443c01a7336-220bdf56c72mr172323375ad.28.1739508782199; Thu, 13 Feb 2025 20:53:02 -0800 (PST) Received: from localhost ([2401:fa00:8f:203:942d:9291:22aa:8126]) by smtp.gmail.com with UTF8SMTPSA id d9443c01a7336-220d5349203sm21043715ad.29.2025.02.13.20.52.59 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 13 Feb 2025 20:53:01 -0800 (PST) From: Sergey Senozhatsky To: Andrew Morton Cc: Yosry Ahmed , Hillf Danton , Kairui Song , Minchan Kim , linux-mm@kvack.org, linux-kernel@vger.kernel.org, Sergey Senozhatsky Subject: [PATCH v6 08/17] zram: filter out recomp targets based on priority Date: Fri, 14 Feb 2025 13:50:20 +0900 Message-ID: <20250214045208.1388854-9-senozhatsky@chromium.org> X-Mailer: git-send-email 2.48.1.601.g30ceb7b040-goog In-Reply-To: <20250214045208.1388854-1-senozhatsky@chromium.org> References: <20250214045208.1388854-1-senozhatsky@chromium.org> MIME-Version: 1.0 X-Rspamd-Server: rspam04 X-Rspamd-Queue-Id: 3B78780004 X-Stat-Signature: 1r3d5zpasg3q5eeejmgyhrobdqntuscz X-Rspam-User: X-HE-Tag: 1739508783-150829 X-HE-Meta: U2FsdGVkX1/jgMhgrO73095uXLVoLBmHtr4los3K753Q+FIu4lWOFb0WYQXmIt6m7x0l9uczji0uFICVB1ZztH6K50IIJt18gnog6cE7kgJBzpIhVs21lIj6rpzspuKSEnwFfwXRmFyf34j6rwvG1zEe6K/WfHO41Q+d7N08LXpMR34UjHenJuvD82V6I2lPKJCYEPeLxhH3YPoKFcu9gLRkHj+4saacEJPZniCZaPAtGIYeHmAMxzJCdr/5VJUKZpKkiN4ThzBlKNZatKZxdlaqxcZP7sWHJdvPpTzY538w8zSUfv8UNq4cbHaDQTzqoI4e+tosfk+miMbvRdAtE7MDrgbgpNpMIlwcgAj4l1DfvcxftVro6qNBUSqSsl67QAZcp7ZVTBC7XGI7zanpj7PXt/DiPGUvEQs108vEh1mORe6m1/itEx36B32a+wO2aew0kIhT6dsXo12yczbE+wIWvFOlvYxpi0Gc+DGFNs0so/5P2Xs+GiohwDcBVW2ehJsN67YUsNnirE7beH3jijQa4EJy/5JC6mfC7Ikhrl3WrpwonIh5trmOCtcDcRay5LA+8qfmUkYoGouuOh9xHKzPSjFX9YMEYuwu1IF0EimwH1/sgiATBzSGzghRK2tfYyJwVRKPnbgHDC8gjbVTADU7/uouTwO1lnbOw85D5L7nB7T/ZeG64YpaSMyH7EusesbXRVOdp/StCf2iCYeDeSLrYLWgGCSG4SeOR8oRXU1MglLNn+/sngMPvZaJPIZEK4MFJdKDTfb2gAkRuXidozsMc2H7E8u+8uwebObsAbNzXI929NK48ZudTujL1VkeCGEg6Gau3OGN6tJ28Se2YupUwR0UMkwFyXlQbSaUZXPZxlZm5/nE0+aYYWzC0bKMnqhftoqD+ZnYL4RMs1e0amSmNs6ESLGqVl117IuvpwSnWEKEx2fjUREhwNzeyf6BgLp8KKH6O2U0+K1AFsa /ekR1Zic eyAvpmyx7IBLfviY81iera4m9VkNK9daU3JxDUOYhTZnut5tM9TVN+B/v6FVydH5hen+kwVFluwxRPBKo7Aj0AhTWEticA4TPeZlLsIk8WOYUEENjutbdBjajFtFXZHCh9gc+ZOr7KgXQhA4j9EMOWgw+u1kDjJht4DWhwj7xsoybueAg81wrAWVYK+Ppk/EUASaiTLnDFVdJ+AmDxCMOjIqu1mc5X3RHBewN0ec0iKJVQhOfGd2Z4zcuJK7GFmBr+dHS94GnjBInnzA918/JCGbEQEa5gHLxS3xaankN/C5ehyKQVhS4swERDA== 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 c11ed2dc23aa..5f8e963bd513 100644 --- a/drivers/block/zram/zram_drv.c +++ b/drivers/block/zram/zram_drv.c @@ -1864,7 +1864,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; @@ -1896,6 +1896,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; @@ -1952,6 +1956,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. @@ -1960,13 +1974,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); @@ -2191,7 +2198,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))) {