From: Sergey Senozhatsky <senozhatsky@chromium.org>
To: Minchan Kim <minchan@kernel.org>
Cc: Sergey Senozhatsky <senozhatsky@chromium.org>,
Andrew Morton <akpm@linux-foundation.org>,
Nitin Gupta <ngupta@vflare.org>,
linux-kernel@vger.kernel.org, linux-mm@kvack.org
Subject: Re: [PATCHv4 2/9] zram: Add recompression algorithm sysfs knob
Date: Thu, 3 Nov 2022 12:05:06 +0900 [thread overview]
Message-ID: <Y2Mv4l+V9iCv9EMg@google.com> (raw)
In-Reply-To: <Y2LP0OWF/WTnkSne@google.com>
On (22/11/02 13:15), Minchan Kim wrote:
[..]
> > /* Module params (documentation at end) */
> > static unsigned int num_devices = 1;
> > @@ -1000,31 +1005,37 @@ static ssize_t max_comp_streams_store(struct device *dev,
> > return len;
> > }
> >
> > -static ssize_t comp_algorithm_show(struct device *dev,
> > - struct device_attribute *attr, char *buf)
>
> Do you have any reason to change show and set placement? Otherwise,
> please keep the function order to reduce unnecesssary churns.
I don't change their placement. It's just show and store for primary and
secondary algorithms use the same __store and __show functions, which
are static and are placed ahead of store and show.
[..]
> Just open question(I might be too paranoid?)
>
> I am thinking someone want to add third comp algorithm in future
> to balance decompression and memory efficiency.
>
> If it's not too crazy idea, let's think about the interface.
> Maybe, could we make the recomp knobs works like list?
>
> # A primary comp
> echo "A" > /zram/comp_algo
>
> # Multiple secondary comps
> echo "B threshold" > /zram/add_recomp_algo
> echo "C threshold" > /zram/add_recomp_algo
> echo "D threshold" > /zram/add_recomp_algo
What is the threshold here? My design approach is that ZRAM doesn't do
recompression on its own, so no magic is happening automatically. It's
the user-space that triggers recompression for selected pages when
user-space thinks it's time to. This allows us to have various flexible
policies and consider things that ZRAM is not even aware of: battery level,
free memory, CPU load average, etc. E.g. no recompression when all CPUs
are busy rendering video game, or when we are draining battery too fast,
etc.
> "cat /zram/recomp_algo" shows the list
>
> echo "C" > /zram/remove_recomp_algo
> will remove the C algorithm in stack.
What is the use case for removal of a secondary algorithm?
> My point is that we don't need to implement it atm but makes the
> interface to open the possibility for future extension.
>
> What do you think?
So, as far as I understand, we don't have reason to add remove_recomp_algo
right now. And existing recomp_algo does not enforce any particular format,
it can be extended. Right now we accept "$name" but can do something like
"$name:$priority". The only thing that we probably need to do is rename
recomp_algo to either add_recomp_algo or register_recomp_algo?
> > +static ssize_t recomp_algorithm_store(struct device *dev,
> > + struct device_attribute *attr,
> > + const char *buf,
> > + size_t len)
> > +{
> > + struct zram *zram = dev_to_zram(dev);
> > + int ret;
> > +
> > + ret = __comp_algorithm_store(zram, ZRAM_SECONDARY_ZCOMP, buf);
> > + return ret ? ret : len;
> > +}
> > +#endif
> > +
> > static ssize_t compact_store(struct device *dev,
> > struct device_attribute *attr, const char *buf, size_t len)
> > {
> > @@ -1762,7 +1817,11 @@ static void zram_reset_device(struct zram *zram)
> > memset(&zram->stats, 0, sizeof(zram->stats));
> > reset_bdev(zram);
> >
> > - comp_algorithm_set(zram, ZRAM_PRIMARY_ZCOMP, default_compressor);
> > + comp_algorithm_set(zram, ZRAM_PRIMARY_ZCOMP,
> > + default_comp_algs[ZRAM_PRIMARY_ZCOMP]);
> > + if (IS_ENABLED(CONFIG_ZRAM_MULTI_COMP))
>
> Dumb question:
>
> Why do you use IS_ENABLED instead of ifdef?
#ifdef-s are banned in the new C-code, as far as I know. IS_ENABLED is
what we should use.
next prev parent reply other threads:[~2022-11-03 3:05 UTC|newest]
Thread overview: 50+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-10-18 4:55 [PATCHv4 0/9] zram: Support multiple compression streams Sergey Senozhatsky
2022-10-18 4:55 ` [PATCHv4 1/9] zram: Preparation for multi-zcomp support Sergey Senozhatsky
2022-11-02 20:13 ` Minchan Kim
2022-11-03 2:40 ` Sergey Senozhatsky
2022-10-18 4:55 ` [PATCHv4 2/9] zram: Add recompression algorithm sysfs knob Sergey Senozhatsky
2022-11-02 20:15 ` Minchan Kim
2022-11-03 3:05 ` Sergey Senozhatsky [this message]
2022-11-03 3:54 ` Sergey Senozhatsky
2022-11-03 17:10 ` Minchan Kim
2022-11-03 4:09 ` Sergey Senozhatsky
2022-11-03 5:36 ` Sergey Senozhatsky
2022-11-03 17:11 ` Minchan Kim
2022-11-03 16:34 ` Minchan Kim
2022-11-04 3:18 ` Sergey Senozhatsky
2022-11-04 4:53 ` Sergey Senozhatsky
2022-11-04 17:43 ` Minchan Kim
2022-11-04 23:41 ` Sergey Senozhatsky
2022-11-05 0:00 ` Sergey Senozhatsky
2022-11-07 19:08 ` Minchan Kim
2022-11-08 0:40 ` Sergey Senozhatsky
2022-11-05 0:01 ` Minchan Kim
2022-11-05 1:30 ` Sergey Senozhatsky
2022-11-04 16:34 ` Minchan Kim
2022-11-04 23:25 ` Sergey Senozhatsky
2022-11-04 23:40 ` Minchan Kim
2022-11-04 23:44 ` Sergey Senozhatsky
2022-11-05 0:02 ` Minchan Kim
2022-10-18 4:55 ` [PATCHv4 3/9] zram: Factor out WB and non-WB zram read functions Sergey Senozhatsky
2022-11-02 20:20 ` Minchan Kim
2022-11-03 2:43 ` Sergey Senozhatsky
2022-10-18 4:55 ` [PATCHv4 4/9] zram: Introduce recompress sysfs knob Sergey Senozhatsky
2022-11-02 21:06 ` Minchan Kim
2022-11-03 3:25 ` Sergey Senozhatsky
2022-11-03 6:03 ` Sergey Senozhatsky
2022-11-03 17:00 ` Minchan Kim
2022-11-04 3:48 ` Sergey Senozhatsky
2022-11-04 7:12 ` Sergey Senozhatsky
2022-11-04 17:53 ` Minchan Kim
2022-11-04 17:27 ` Minchan Kim
2022-11-04 23:22 ` Sergey Senozhatsky
2022-11-04 7:53 ` Sergey Senozhatsky
2022-11-04 8:08 ` Sergey Senozhatsky
2022-11-04 17:47 ` Minchan Kim
2022-10-18 4:55 ` [PATCHv4 5/9] documentation: Add recompression documentation Sergey Senozhatsky
2022-10-18 4:55 ` [PATCHv4 6/9] zram: Add recompression algorithm choice to Kconfig Sergey Senozhatsky
2022-10-18 4:55 ` [PATCHv4 7/9] zram: Add recompress flag to read_block_state() Sergey Senozhatsky
2022-10-18 4:55 ` [PATCHv4 8/9] zram: Clarify writeback_store() comment Sergey Senozhatsky
2022-10-18 4:55 ` [PATCHv4 9/9] zram: Use IS_ERR_VALUE() to check for zs_malloc() errors Sergey Senozhatsky
2022-11-02 20:07 ` [PATCHv4 0/9] zram: Support multiple compression streams Minchan Kim
2022-11-03 3:36 ` Sergey Senozhatsky
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=Y2Mv4l+V9iCv9EMg@google.com \
--to=senozhatsky@chromium.org \
--cc=akpm@linux-foundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=minchan@kernel.org \
--cc=ngupta@vflare.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.