From patchwork Fri Feb 21 22:25:39 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sergey Senozhatsky X-Patchwork-Id: 13986385 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 8EE05C021B5 for ; Fri, 21 Feb 2025 22:30:56 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 2A2B4280008; Fri, 21 Feb 2025 17:30:56 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 2535E280004; Fri, 21 Feb 2025 17:30:56 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 0CD10280008; Fri, 21 Feb 2025 17:30:56 -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 DCFDF280004 for ; Fri, 21 Feb 2025 17:30:55 -0500 (EST) Received: from smtpin22.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 1D900808CA for ; Fri, 21 Feb 2025 22:30:55 +0000 (UTC) X-FDA: 83145398070.22.873F802 Received: from mail-pj1-f41.google.com (mail-pj1-f41.google.com [209.85.216.41]) by imf14.hostedemail.com (Postfix) with ESMTP id 12E1F100012 for ; Fri, 21 Feb 2025 22:30:52 +0000 (UTC) Authentication-Results: imf14.hostedemail.com; dkim=pass header.d=chromium.org header.s=google header.b=I7MwnhZi; dmarc=pass (policy=none) header.from=chromium.org; spf=pass (imf14.hostedemail.com: domain of senozhatsky@chromium.org designates 209.85.216.41 as permitted sender) smtp.mailfrom=senozhatsky@chromium.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1740177053; a=rsa-sha256; cv=none; b=r90Pa/tGV6Tw/n9RwYIrGxD/oUxoUI6msj6Lkq2bLTxvguc/YZGgFj6Kq2Jw34uQ7jzxC4 /TfBYwP4bOs5GeNdqMzR+H8j0/7HG4JbqGRG8mucboKOnn9aLOKfz249tocEotFXgUIcrk sKELYjZq99tlhbT1XusrtDuTdmA7m6c= ARC-Authentication-Results: i=1; imf14.hostedemail.com; dkim=pass header.d=chromium.org header.s=google header.b=I7MwnhZi; dmarc=pass (policy=none) header.from=chromium.org; spf=pass (imf14.hostedemail.com: domain of senozhatsky@chromium.org designates 209.85.216.41 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=1740177053; 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=V8ADKywr3WoOFpGXL6UuUKwoYnHNcDBvl5iV/2gcJVI=; b=uG0D77mX2TplBnUSSBLylWYwXeilwb/QcSfBzR2NtDYzTjxmHegRfLDOSYgmpda4qDbK+2 lqMblJ4EVXbluTG2rPxF+QNFTxMtJvBtZM/vsRcICwYBbuk0Rdak8PrVRk6d63bJhtajSt 9mfxtMCs9D/sjI8wZW3G9uSX0ulJkHs= Received: by mail-pj1-f41.google.com with SMTP id 98e67ed59e1d1-2fc0bd358ccso5383645a91.2 for ; Fri, 21 Feb 2025 14:30:52 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1740177052; x=1740781852; 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=V8ADKywr3WoOFpGXL6UuUKwoYnHNcDBvl5iV/2gcJVI=; b=I7MwnhZip+KC+AfPvrbBZEm45ADHNr6H5sIFsIp9iweEV5wUqR0bidK00/UiZo25pL Eeh2qcaMjITB5GCUzQgBg6sMdjlt8SqvPrcdqKJYfIuHvs6eMtEHyO0PO/7+2wqhwnif dCkJFUhhi469nhiafYlcFE1giZ1bQGImNsbOQ= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740177052; x=1740781852; 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=V8ADKywr3WoOFpGXL6UuUKwoYnHNcDBvl5iV/2gcJVI=; b=DyQFJIGMu7/K8Lq3c/TStMEIaIb56/Ti/xO2hDowzahhqJhf/wpbhPlWTWxCgZ4njt gtQ4pWhnFsI8vAz62KGluJekpr2CpygFdPR+HHUj1VwXjxD2DYyq/GZPztqAPFrKLwH8 67S0JOVgNyTTwBkUoE3o/cKUL53/g7ua0J1Mb5axM1eVz8Vy2LEvDtOA+a4lxrFB1h/h C5t1MtmJ6uVhHMFp8ynZ0wEPaOfXOsoA0L+gCtcuh+pqZW9J31huh8FY7Lp7dGb5ieYE zOeSgvhW2uzOPQVDiGoNXghsVglCuXO7nZdXdkExYdWvhlfRTWhT1Lw0gcJFh2fo/WlW x3jw== X-Forwarded-Encrypted: i=1; AJvYcCXJB1mtRUjhgu7BeXZdH6xdEO9zhrSkk3y7mr4w/O9oPNw9AAWuaZjY8wHfuL2i4RTlhJBZkx87nQ==@kvack.org X-Gm-Message-State: AOJu0Yw7UBm7499Va+ymSj2GUzACJf+v9jsz401mkdHJiKjs9Mfk0VfO h1UhD8KsLyESFNclWERlFnX3XqAvg3EO/pEIZ/z0te+u6jccsnY/WPh7i2OG2w== X-Gm-Gg: ASbGnctt0dJPoEsRL6TLf0ALlcImZXBK2k8KtnkQsQHqxwzyAJmxlSHRsxr93LSyT7c kBvofjZRWGfAjcoaI9IA9cxZMCAkPNUSjp8U9DjLyyyVGzseDA5Spn6pfm1pb1EQV9SUOIQlem0 v4ucpQ1wRvhEGGXtD2nYyfL3u2hyTqQAtRY+n5Z5QAfHPiq1G09z5ovtjih8/vHgJHbnlxd1qY5 LnrH9jHKSE/tkgWBg1byO8Q8n2p65Ugh7Z8eJw0MKE/P3aoQD+oAiKLZbEdwNxAH7PelXZLtz8n 6aVKM6sQjft20rNE1ILAbD1xEyY= X-Google-Smtp-Source: AGHT+IFoSRURobpKbzExYiuyv2t2GitVExUur5YjtZeJcx2+K102Tu8eedtNsSQzkCzjNm/j9ms6AA== X-Received: by 2002:a17:90a:da87:b0:2ea:b564:4b31 with SMTP id 98e67ed59e1d1-2fce78c7871mr7538085a91.19.1740177051891; Fri, 21 Feb 2025 14:30:51 -0800 (PST) Received: from localhost ([2401:fa00:8f:203:f987:e1e:3dbb:2191]) by smtp.gmail.com with UTF8SMTPSA id 98e67ed59e1d1-2fceb05f8b8sm1961471a91.26.2025.02.21.14.30.49 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 21 Feb 2025 14:30:51 -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 v8 08/17] zram: filter out recomp targets based on priority Date: Sat, 22 Feb 2025 07:25:39 +0900 Message-ID: <20250221222958.2225035-9-senozhatsky@chromium.org> X-Mailer: git-send-email 2.48.1.601.g30ceb7b040-goog In-Reply-To: <20250221222958.2225035-1-senozhatsky@chromium.org> References: <20250221222958.2225035-1-senozhatsky@chromium.org> MIME-Version: 1.0 X-Rspamd-Server: rspam02 X-Rspamd-Queue-Id: 12E1F100012 X-Stat-Signature: 7fyhtc7dhpywwy8kb1mhaoenbgfdgrkm X-Rspam-User: X-HE-Tag: 1740177052-254706 X-HE-Meta: U2FsdGVkX1+Urqr90lHTZhGOHAgtqLkkb6IVDglU/cKkYg3g3LyV2UrmRYDOkUPeC8OyDbm6GtbekhXPDF5KiboZu0A2YsEeN6m+PwBL/aCBz2Nluf/vBWPqjHU1DtIOd61ir68yl+aXhXwX+/1Hf5NjgwvGJ/4nz5lmRwehKkheykCyCWsxZ3TdCSJwcnVh393A16igJF/j58r7WA2frhVoCvbih0hddW3XpQtaZsCOe6GjquFXCscJUTe593YhQPTGy3aqZHsDl4GYa4HZCh3lHNrb1iOb4lXworD8yqyvw5VGSA7eDupUI5I6vupGYzhIO3HXyh/5aYjYQXqY5IazU9Ky4B5z9Ks7qFOjTgIcfpO9YKpxAVMEQaP7h/Xo1VMUa/pj7K5lsP3QiPwf5XjqSyK7IzXUD8v5Q2eydjzbkFPGf5BANMAq8dACT98xP+DyBOwrK5eVvDiV5gqDSQ6uhdeh2l9iPSgSZIh/t6Q7a8pRU4egjxmhxCaR4WTk/8wH+KK95hPtH5HyxpdfvOTSc7IeOEN0GJj1R0SuadgwjHHVZnQ8TeGKv5S4g+OkK7ZYS3tFiPZjE0B0vE9ffR0n5W8P2HtSdReXgJvh8cb8jrCJc12EeoOuxWAVioShW66cZHFJysZOb1bU3YryLkQzPcGm2Ps57jk33kKT7/1l5WFl6PxYy9c80XcGuuii/CU7bvYhXesLWyyjUvknTDG3pO7J/jDppO/eki7S5gt/SQMIVnA+VrsCqJzF6ozYFV4wqOhb2y4oGVLAwc1hztFD1Ea/27BNsfvD8JWy6ymV0+zhGNd3/WmO2xanWr2LTLFF5cMCN2n7Uoylfr2vvumcwv1+1S6naxF2Ec5pQq1VGUPVhYkR8Pn9AwpzXmkdFA4AbQv1dBRJczumXi9SZFcXL4aLuB5symJLqLNIegWFxCrDnp1UR+B0wKmVfOYwKnUhTLodFXYMnxCg5OI DYw9wMhu TFIpwI/x4U+kbplzORPguFwSAfdEHbUiROOfQEMOdtksZYWrJVaXMPIvlV90tjUHdxAEvWJb5zhiN2xtbWmFqEWdObhgshiSGqchwhp11vI6i5XzMCO5zeV4fSK3xAPgsduCipe3XCuV4gscxYI7wNGVj5I+WOlrLfq3TiQWO2XL6u1wE5FwMnrjbYlWakSn8HRhJAm+ByalcqVHJl1o3hO4x5LeGWrntMBx10Fo7KFj0czoegGHXp+s3724Mac6xFtHryHjloDcdopw41YKOn0ZxhgFXaM5c8ceg+57HKIjDjQHa6nisNvzg6w== 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 b32b959046af..92908495c904 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))) {