From mboxrd@z Thu Jan 1 00:00:00 1970 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 356D5C433FE for ; Fri, 4 Nov 2022 07:12:21 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 7DB296B0071; Fri, 4 Nov 2022 03:12:20 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 78B4B8E0001; Fri, 4 Nov 2022 03:12:20 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 652B96B0074; Fri, 4 Nov 2022 03:12:20 -0400 (EDT) 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 555806B0071 for ; Fri, 4 Nov 2022 03:12:20 -0400 (EDT) Received: from smtpin12.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id F0DD214037D for ; Fri, 4 Nov 2022 07:12:19 +0000 (UTC) X-FDA: 80094891198.12.83BC2AD Received: from mail-pj1-f46.google.com (mail-pj1-f46.google.com [209.85.216.46]) by imf02.hostedemail.com (Postfix) with ESMTP id 82B6D80006 for ; Fri, 4 Nov 2022 07:12:19 +0000 (UTC) Received: by mail-pj1-f46.google.com with SMTP id r61-20020a17090a43c300b00212f4e9cccdso7389073pjg.5 for ; Fri, 04 Nov 2022 00:12:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=ome+6eb1fVWp9/DjTZmKuTHrFooj0YZvMdCpPjHEIJc=; b=k6otuHVPS8vwU3tm2qAxRFT1CRJkVi3eHgQ/pHPA0maQR6mYzvNXtfuhFB5IMs3avo kFWGNdennNGcekOwssJvwFg+VLBHPTS+JLMLH6JhDrJ0xV0KVzfnxj8wNO8wTmw188Rx IZqgez1wxEP6nBXUCiGC1RpOaNGCbsEDyDLsY= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=ome+6eb1fVWp9/DjTZmKuTHrFooj0YZvMdCpPjHEIJc=; b=0pybMbj6rkjH8OBx91ufsYgNLRLsRRAsff3NxDPhSUJ01Aja2RjOFolB95AtJuucru sMV7FOLzqn3xZmZRy7HB86w7ykPwdCoX5cUh26QAwf1ZCQUmRy8CjojfB9QxtsSBM4Hg RL51ddVIUiCnONlgi8j4GxfekjhKvRufYz+ctuDHZNip1Rivx3t+GeRVG4vh9zY6pZ/0 7JZ/3YfiCBIFiLzMyRt1TI3JlL3XB0SZIpRLQSsAT37w3b7Ob96YVFMSj9xadOb+SZf5 O39YLkjZ0tYKtETm7Gz+IWHWKJ4LOwsCue5atNyQQBsOrbpvTgVWyq/d8Ng9G5qKVpuw aI9Q== X-Gm-Message-State: ACrzQf0Fdcj/5TGahEy/ktqjJye1XOrCXtnjtJiFuM4+/Qsl8mS4Usor D1kPv0p4G2jbrupZfoa7EYmlqA== X-Google-Smtp-Source: AMsMyM59CqcWOHw0lngHLemoGGCLj787y/gNtbIUEMA/joNTAVddQiFiJ9LdLiRKiaVN5WZFm9jAmw== X-Received: by 2002:a17:903:2352:b0:186:aaed:e7b8 with SMTP id c18-20020a170903235200b00186aaede7b8mr33495286plh.47.1667545938290; Fri, 04 Nov 2022 00:12:18 -0700 (PDT) Received: from google.com ([240f:75:7537:3187:f2f6:8f5:87c8:3aeb]) by smtp.gmail.com with ESMTPSA id r15-20020a635d0f000000b0046f59bef0c5sm1734679pgb.89.2022.11.04.00.12.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 04 Nov 2022 00:12:17 -0700 (PDT) Date: Fri, 4 Nov 2022 16:12:13 +0900 From: Sergey Senozhatsky To: Minchan Kim Cc: Andrew Morton , Nitin Gupta , linux-kernel@vger.kernel.org, linux-mm@kvack.org, Sergey Senozhatsky Subject: Re: [PATCHv4 4/9] zram: Introduce recompress sysfs knob Message-ID: References: <20221018045533.2396670-1-senozhatsky@chromium.org> <20221018045533.2396670-5-senozhatsky@chromium.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1667545939; a=rsa-sha256; cv=none; b=U5fly/JGs4Pcu71/TIz0voi+a/aejb3Ls1klPPlzePbBJj+F5oDnwcLmpI3voDc6BbmDSU /2BuRmYaJa6j7VWdm81UZd5Ap/oowD/ngDT54XdoYEr9q0vCzkRELR9ojFCLVDcDjQGHea 3mwUjLQ59UFza2GPLOvUfH/DYrpGAVA= ARC-Authentication-Results: i=1; imf02.hostedemail.com; dkim=pass header.d=chromium.org header.s=google header.b=k6otuHVP; dmarc=pass (policy=none) header.from=chromium.org; spf=pass (imf02.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=1667545939; 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-type:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=ome+6eb1fVWp9/DjTZmKuTHrFooj0YZvMdCpPjHEIJc=; b=LVGnJQKPi/hajcGX1QJYRbgrCEvOiDjstYlXkHBIqnD7LNSQE1XrxqRjJSIlCkDKzbU6Hp N0LswBp1Akl1OPJyLZg7+8t8g8Z8Bkud18pdQg+3I7JeidLMibtwVOvazA3pKAQPjdyLB7 ghySVDfZj/9rHBjswNHWcX39eutPDLM= X-Stat-Signature: wt3yooa3z5tnam8ex3qjtbm9yutunc66 X-Rspamd-Server: rspam04 X-Rspamd-Queue-Id: 82B6D80006 X-Rspam-User: Authentication-Results: imf02.hostedemail.com; dkim=pass header.d=chromium.org header.s=google header.b=k6otuHVP; dmarc=pass (policy=none) header.from=chromium.org; spf=pass (imf02.hostedemail.com: domain of senozhatsky@chromium.org designates 209.85.216.46 as permitted sender) smtp.mailfrom=senozhatsky@chromium.org X-HE-Tag: 1667545939-903292 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: On (22/11/04 12:48), Sergey Senozhatsky wrote: > > read_block_state > > zram_algo_idx(zram, index) > 0 ? 'r' : '.'); > > > > zram_read_from_zpool > > if (zram_algo_idx(zram, idx) != 0) > > idx = 1; > > As an idea, maybe we can store everything re-compression related > in a dedicated meta field? SKIP flag, algorithm ID, etc. That's just an idea. Something like this --- diff --git a/drivers/block/zram/zram_drv.h b/drivers/block/zram/zram_drv.h index bdfc9bf0bdd5..c011d0f145f6 100644 --- a/drivers/block/zram/zram_drv.h +++ b/drivers/block/zram/zram_drv.h @@ -49,8 +49,6 @@ enum zram_pageflags { ZRAM_UNDER_WB, /* page is under writeback */ ZRAM_HUGE, /* Incompressible page */ ZRAM_IDLE, /* not accessed page since last idle marking */ - ZRAM_RECOMP, /* page was recompressed */ - ZRAM_RECOMP_SKIP, /* secondary algorithm cannot compress this page */ __NR_ZRAM_PAGEFLAGS, }; @@ -64,6 +62,11 @@ struct zram_table_entry { unsigned long element; }; unsigned long flags; +#ifdef CONFIG_ZRAM_MULTI_COMP + unsigned int incompressible:1; + unsigned int priority:2; +#endif + #ifdef CONFIG_ZRAM_MEMORY_TRACKING ktime_t ac_time; #endif --- The reason I'm thinking about it is that we have flags bits that are used only when particular .config options are enabled. Without those options we just waste bits. Recompression is one such thing. Another one is writeback. --- diff --git a/drivers/block/zram/zram_drv.h b/drivers/block/zram/zram_drv.h index c011d0f145f6..7076ec209e79 100644 --- a/drivers/block/zram/zram_drv.h +++ b/drivers/block/zram/zram_drv.h @@ -45,8 +45,6 @@ enum zram_pageflags { /* zram slot is locked */ ZRAM_LOCK = ZRAM_FLAG_SHIFT, ZRAM_SAME, /* Page consists the same element */ - ZRAM_WB, /* page is stored on backing_device */ - ZRAM_UNDER_WB, /* page is under writeback */ ZRAM_HUGE, /* Incompressible page */ ZRAM_IDLE, /* not accessed page since last idle marking */ @@ -68,6 +66,8 @@ struct zram_table_entry { #endif #ifdef CONFIG_ZRAM_MEMORY_TRACKING + unsigned int under_writeback:1; + unsigned int written_back:1; ktime_t ac_time; #endif }; --- So we can use ->flags only for things that are independent of .config