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 26172C433FE for ; Fri, 4 Nov 2022 17:53:26 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 92F408E0001; Fri, 4 Nov 2022 13:53:25 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 8DF286B0073; Fri, 4 Nov 2022 13:53:25 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 77FAB8E0001; Fri, 4 Nov 2022 13:53:25 -0400 (EDT) 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 66D0F6B0071 for ; Fri, 4 Nov 2022 13:53:25 -0400 (EDT) Received: from smtpin12.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 3F9EBA150B for ; Fri, 4 Nov 2022 17:53:25 +0000 (UTC) X-FDA: 80096506770.12.F85BADE Received: from mail-pj1-f45.google.com (mail-pj1-f45.google.com [209.85.216.45]) by imf25.hostedemail.com (Postfix) with ESMTP id C85B3A0005 for ; Fri, 4 Nov 2022 17:53:24 +0000 (UTC) Received: by mail-pj1-f45.google.com with SMTP id z5-20020a17090a8b8500b00210a3a2364fso8244200pjn.0 for ; Fri, 04 Nov 2022 10:53:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:sender:from:to:cc:subject:date:message-id :reply-to; bh=5AYqS6mUkjpXYu0T8n2KAq9xhXXH9ady33cw5jnMQfc=; b=oa0bWEELOkYXMyGM8Nr2LpiqMV8AeIGsNwMsA2/belHZtqm8lU2Vm32X9ex8K7R/jZ a71lzul/ITSf8L72il2yLGy2PVhdERNYB/kU8imcv8WCgAfsx+IrgA3vV9hngSoZN2jh Zgse9vFoPwGL962j9enmfSnr+nhUhxfiyjakBnRLBx3psXf8CYsPYUWnledbA98wrgu8 cWwYX76ZgWV9NRCgqKsrGFa5PnjbM+oZiVMfkWVxLyo3S4VHlU1BW7MTx67QCvIUDwzv 4hvgrubfRR7dVV6SlYAd5/e+uzbashuY0FrbXSpe+FrB7lB4HubkdldpQM/RocPWpl1q s4jA== 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:sender:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=5AYqS6mUkjpXYu0T8n2KAq9xhXXH9ady33cw5jnMQfc=; b=B2LuxGZOWL8yzP3e9W3YZqeLF8kcOaFDLlQoM/Tkl86eSMEpsGFvQcZCb6iLoKAWBJ v47FLmCEqljnbaW5JYCLrW2hDqrR9tOHIbKtbhefY6Ch2+Q7a8zwyHCKQWiom4urygo3 K1mnZU+U38NMxWnGXMD1I2tCVR/Q6hgs5+QEo0H7pbai1wNgvrEQm+6XcUd17nx879nb YIOeOt3rEVoRB3RFSfDogeWhkBk/yNA0MqdiguwCnMasI7sQ7WN5ls7EOIBFUICI7tSc fFM0K8HyzTw3y43zJk7NdlXvmnV8UFX1ofwtQwDuAu/DuQr4fHpqGdGpqWZy5uluZJ4Z v0HQ== X-Gm-Message-State: ACrzQf1VURbnJNPT/lXJeDM0/SSWi5hGUUcgb7tJfih0ZrUyCj20Qlpk /w/TvdJAw6pVSP5utv0n2EagwwV5Yuc= X-Google-Smtp-Source: AMsMyM6Yx44eGHHswjMF/T+vbjCAyA/4tua1IM0bZYF1atgKJLGGcH6VWOBtIMuQ3FU39KesOAAjyw== X-Received: by 2002:a17:903:2352:b0:186:aaed:e7b8 with SMTP id c18-20020a170903235200b00186aaede7b8mr35944162plh.47.1667584403403; Fri, 04 Nov 2022 10:53:23 -0700 (PDT) Received: from google.com ([2620:15c:211:201:755f:cdcb:1bd8:5ad8]) by smtp.gmail.com with ESMTPSA id a9-20020a170902ecc900b001886ff82680sm12698plh.127.2022.11.04.10.53.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 04 Nov 2022 10:53:22 -0700 (PDT) Date: Fri, 4 Nov 2022 10:53:21 -0700 From: Minchan Kim To: Sergey Senozhatsky Cc: Andrew Morton , Nitin Gupta , linux-kernel@vger.kernel.org, linux-mm@kvack.org 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=1667584404; a=rsa-sha256; cv=none; b=olf8uZ4Qn0NHe5/HcF/wqnfcDCVAh8LinjbBR1qB9Nl8cyL/z17XjlN+FQWDssD6FYLQma eLUJmjF4HZeLJ8jDPhtP6aJLythW7kFOJ0VFwv+/yVoONiMwkgC8KD8nhRhnrJpN6QMPZZ yPs5H80ZZcgIu3HHyn8ebjbSDx568YQ= ARC-Authentication-Results: i=1; imf25.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=oa0bWEEL; spf=pass (imf25.hostedemail.com: domain of minchan.kim@gmail.com designates 209.85.216.45 as permitted sender) smtp.mailfrom=minchan.kim@gmail.com; dmarc=fail reason="SPF not aligned (relaxed), DKIM not aligned (relaxed)" header.from=kernel.org (policy=none) ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1667584404; h=from:from:sender: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=5AYqS6mUkjpXYu0T8n2KAq9xhXXH9ady33cw5jnMQfc=; b=Lr736KWoDf5HJgvWBEDa238LaNAT+9kSPwq/ms387uodfCACiWMEbWHrjeEHoWiZmIcwsW yKTb69pKHliENK1NJZhNvJNeA0jlWRwqM1RNsVQQ/PpLSr5ZDEZvm4mxt+LlZjQz593HZ4 i6qo0DS7uol751m981psFpYRowgKpCg= Authentication-Results: imf25.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=oa0bWEEL; spf=pass (imf25.hostedemail.com: domain of minchan.kim@gmail.com designates 209.85.216.45 as permitted sender) smtp.mailfrom=minchan.kim@gmail.com; dmarc=fail reason="SPF not aligned (relaxed), DKIM not aligned (relaxed)" header.from=kernel.org (policy=none) X-Rspam-User: X-Rspamd-Server: rspam01 X-Rspamd-Queue-Id: C85B3A0005 X-Stat-Signature: pix8759dont1j7fjt7tt5ch7hqsfm1z7 X-HE-Tag: 1667584404-126282 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 Fri, Nov 04, 2022 at 04:12:13PM +0900, Sergey Senozhatsky wrote: > 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 Couldn't we move them into a dedicated field to introduce one more field overhead in the meta area when we run out the extra field in the flag? So I'd like to squeeze the bits into flag.