From patchwork Wed Feb 12 06:27:06 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sergey Senozhatsky X-Patchwork-Id: 13971036 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 66766C02198 for ; Wed, 12 Feb 2025 06:32:46 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id E1FCF280006; Wed, 12 Feb 2025 01:32:45 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id DD097280001; Wed, 12 Feb 2025 01:32:45 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id C2427280006; Wed, 12 Feb 2025 01:32:45 -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 A47F7280001 for ; Wed, 12 Feb 2025 01:32:45 -0500 (EST) Received: from smtpin05.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 3B328A0EA2 for ; Wed, 12 Feb 2025 06:32:45 +0000 (UTC) X-FDA: 83110324290.05.161E9AD Received: from mail-pl1-f171.google.com (mail-pl1-f171.google.com [209.85.214.171]) by imf21.hostedemail.com (Postfix) with ESMTP id 5E20F1C000C for ; Wed, 12 Feb 2025 06:32:43 +0000 (UTC) Authentication-Results: imf21.hostedemail.com; dkim=pass header.d=chromium.org header.s=google header.b=BBRMUlRy; spf=pass (imf21.hostedemail.com: domain of senozhatsky@chromium.org designates 209.85.214.171 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=1739341963; 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=GyNDz1JqW9fZ5TiB72j3x2sTVp+ebBvZsmBm0h5y3g0=; b=q7ITXhagKPMqLfk3huk04aN1vnREy5s7Hd8wrR5bCtue0aMRcVW3XL1lU9CYKyzON6qlbB yNOAyg4U+ljPqBE6U3phE2B+5rXRsFM5kLlQZ7dg0lFpb/7gnXP4H098Rs7QOLLfpIKURc 6Kbbxm+KEaAePrgpOrxgiE0t/+D9EKI= ARC-Authentication-Results: i=1; imf21.hostedemail.com; dkim=pass header.d=chromium.org header.s=google header.b=BBRMUlRy; spf=pass (imf21.hostedemail.com: domain of senozhatsky@chromium.org designates 209.85.214.171 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=1739341963; a=rsa-sha256; cv=none; b=7IwDbB1TLrQ2MdX7/VD/0gOyipttDaCL3aVv83GUAae1KzoYc0qRUudaIFKbN7UXM2M7GZ /qJOGuMyGIleTPYl+/ifHgj2qPFpJ619fG7nkpLuMprE05QJ5UirXzyN6OS5to3IpopY3X /6IB+ogohdXA9u2ZJLrGPk3/wBFF7oA= Received: by mail-pl1-f171.google.com with SMTP id d9443c01a7336-21f49bd087cso87524105ad.0 for ; Tue, 11 Feb 2025 22:32:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1739341962; x=1739946762; 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=GyNDz1JqW9fZ5TiB72j3x2sTVp+ebBvZsmBm0h5y3g0=; b=BBRMUlRyuBKA/YOaubuueu+DehlSSe8ZQVESxmJj4f1FykvGcFvGpKohbNqMQ4brNJ I6vMdTm6YqkpD1MkY22Yv6gXcU10mqXikMueqgQ3TOuyQUwhQCAbt91vDaPbsXmV6/fL z1kjggE53+VJ9ZhGK3kWe+uEau+bsd431Qh+k= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739341962; x=1739946762; 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=GyNDz1JqW9fZ5TiB72j3x2sTVp+ebBvZsmBm0h5y3g0=; b=VLSYjEnCmD3sB8LR3DyZDENgbZw+1X32yXcom0vGsI5RRsV2qYn7St+ICp4UL8wt3K itT0IhSR0Whs/9zdA0fT/CWPP3L7BtNfZVtqEsxA9DTSxw7xPFb/WXLaHtRUjzxlplPD XFBNpOTMfUl+zs4HUMqMvmSEP5K8S3nNFSrkCmIJY6yPM7IOmk0p2CjeYYLwaXMqnrec VV8KuJzu1QKYKodeeelIrvxo8dx2TkxkUDDTn6fNP18rMzT9tMx/LTa+S6VxYoJNNjud syxSe/heliUpoSitQiKARteIQWNQByrLgvTlqLc71tdQGMJku1HkaHlWTwGU7bahvc5P 15Jw== X-Forwarded-Encrypted: i=1; AJvYcCUZa6UKJb+0FZLo0erl2cBvSCNrr+YgP71ZH0H+F3S9QBgRXr31BPBBtNYOno58VoOLiwiJCKKBNA==@kvack.org X-Gm-Message-State: AOJu0YxbyQ3J/jy8bpOmFw/q71vw8KlR0NZhvsXL+lX0N0aX8fCO3vQ7 C6C18D2ScHLJouCUhle1sl9ABnmfHejWz0jeKO0PVn74z0YcCNtV4B2jNIKwyS9f43JCufoCvak = X-Gm-Gg: ASbGncuqkikluMCHo3VK0010/gErxWbX+2fcg4V4T9wdyv6xjYjpIWfcOk7BFtK2WQO ZZnP/pm+bkPii9dj4DuDqj/BdB/Z0nvihb7gZ34oLxSyMsmtxJ5UyBWu5MElSTAqf+JF3j8U+NR AXMpi8J67u+oHPg/7kTThse5w1vVJDyy6tTi4Rb4YxyNmeBYENVdq8/UP/jz0GB7f0Dne5cQEES VrJomF2HpM21/Xw5XHgkKNyuCq4FG9bAPFYLt6bSGs5eFG+t2WTq/GubHyw+/RHgeLXr7p/5sMc NpLEUKvbhYHX6ZEnMw== X-Google-Smtp-Source: AGHT+IHuvm8HCsSAsDPLpNBHM4fkgErNxht0F4ETwuQK+JzFh06XIBG0WxJwETNpSs2/VqRQClDZHQ== X-Received: by 2002:a05:6a21:600b:b0:1e1:af74:a235 with SMTP id adf61e73a8af0-1ee5c790de5mr4045324637.24.1739341962338; Tue, 11 Feb 2025 22:32:42 -0800 (PST) Received: from localhost ([2401:fa00:8f:203:69f5:6852:451e:8142]) by smtp.gmail.com with UTF8SMTPSA id d2e1a72fcca58-7308e4881fesm4730281b3a.46.2025.02.11.22.32.40 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 11 Feb 2025 22:32:42 -0800 (PST) From: Sergey Senozhatsky To: Andrew Morton Cc: Yosry Ahmed , Kairui Song , Minchan Kim , linux-mm@kvack.org, linux-kernel@vger.kernel.org, Sergey Senozhatsky Subject: [PATCH v5 08/18] zram: filter out recomp targets based on priority Date: Wed, 12 Feb 2025 15:27:06 +0900 Message-ID: <20250212063153.179231-9-senozhatsky@chromium.org> X-Mailer: git-send-email 2.48.1.502.g6dc24dfdaf-goog In-Reply-To: <20250212063153.179231-1-senozhatsky@chromium.org> References: <20250212063153.179231-1-senozhatsky@chromium.org> MIME-Version: 1.0 X-Rspamd-Server: rspam04 X-Rspamd-Queue-Id: 5E20F1C000C X-Stat-Signature: qrde3apaduf719ybcu67ekk8gs7id547 X-Rspam-User: X-HE-Tag: 1739341963-266637 X-HE-Meta: U2FsdGVkX1/Mxo7dd8NWuyffX1BtZsOyd6xZ+9k1Cu48rIgYDYKzbO18Jn0/HeB8EaX7HkS05pBpS89XUi1Y4K1tZdcCOjpZG66tT77xrOKhksJluv7GQMpsCz2V3i2+Z8UF9OInX8n3uEp70hnmIm/sxU/tJB8bZJwxiyIrGiKLhzdkhm22rMi26qiOlSKnZ09PGk4oMdn9hDfWMN+lpiviwoHePbBCeNepKcq+eSoRbakSzY+2f5bYOethBA1nsP4BM9HU5oKwGy1kFZ3leJpzKjJ616fYeR9FG6LIu0O3eDrQqEjFJiLWQIYcTiFRTCeTS8arltmVp524Wcwt4W2jwTFFohOKtkRjsJ8rRamZ+gWv+lcClKys2dio5t3bEMOilsGKfRtqeVrvWLXXRkqjNIIsJZK08HdIzRrnSY4jGJ2sb+A3HIPaedWbNJw6np8W3jMl83bWkWimc44yB4KpbT/tu8SwOmHsFLGAAdh1PshHR2cNtGYWjicIiDMSZYBSlq14xmf/komW4nV0Q+Eh9iifNATgqKcs+Es5jbrpH7YQkAeAu9/sDZ0blTQk6rlNDSTNpAub3ZjqVy3JoDCD028lhIQlx70xrpN9ygS88WoLgpd2kOprcNCU8Retqa7Y441gjqe8HdYzcEDxOB7kd+3+Q5Si0vS53FOpnEBf1nOPL1ghr0vXDk5B9pZaNJUk603vcp3XSZpHX8gU/oLQdvQnnRhK5fmOhyaShIcP5XN0L5pMdAkmUD5SudvaE++bC6n0vgvKrR4KTY1rYnTKTp8EG6tABw/9VDz7dlTYPzB3hoX+30CWPOXn6t5ryYbEEk9HRhx9CPSruVErUJ0j+JGWKszzpZ1C/74MFcayt8TXcp5KboIFi3ZLhJdQAKLG3WvOyxlEjIfZdFEuAW9rXmCHTRa3mUUOGqJ3KXMMcvaA6+KEG93KLuIwVsj1Q2MMpufNmk9l5lCGcBW C0L07Hx6 0jWLLlLKr2mdey+MVOmUDLRPFH0m5m8hWYkT8PD6D9EftUrNn9n6zx6gx/PNQwRoPqa/lF3vX5CzTUVRID6PtxyFwwnXGY4NaJfasfO1IvAhstjCVV1jjVR5LFJ2bjL8vKEFSsRWvJsN0N/6Vi8H3Y5MhCJytPQY66BGk5J/q2P6kP5yvY068HZqJPXxquXdKFom74ik5+GVSVSxb8pRbldbppyFVuNHcRiY8dlzIm7LdQ9/zcbNyno58f+X+zsqF4+mGQKWQYerhqx+tIb2Kfri8uR9c6C+GtAdc4xOnnTXhG1DWwRpjPnH0Tw== 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 27148f3e5ae9..31bdf5e0ff74 100644 --- a/drivers/block/zram/zram_drv.c +++ b/drivers/block/zram/zram_drv.c @@ -1822,7 +1822,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; @@ -1854,6 +1854,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; @@ -1910,6 +1914,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. @@ -1918,13 +1932,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); @@ -2149,7 +2156,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))) {