Message ID | 20221018045533.2396670-1-senozhatsky@chromium.org (mailing list archive) |
---|---|
Headers | show |
Series | zram: Support multiple compression streams | expand |
On Tue, Oct 18, 2022 at 01:55:24PM +0900, Sergey Senozhatsky wrote: > Hello, > > This series adds support for multiple (per-CPU) > compression streams (at point only 2). The main idea is that > different compression algorithms have different characteristics > and zram may benefit when it uses a combination of algorithms: > a default algorithm that is faster but have lower compression > rate and a secondary algorithm that can use higher compression > rate at a price of slower compression/decompression. > > There are several use-case for this functionality: > > - huge pages re-compression: zstd or deflate can successfully > compress huge pages (~50% of huge pages on my synthetic ChromeOS > tests), IOW pages that lzo was not able to compress. > > - idle pages re-compression: idle/cold pages sit in the memory > and we may reduce zsmalloc memory usage if we recompress those > idle pages. > > User-space has a number of ways to control the behavior > and impact of zram recompression: what type of pages should be > recompressed, size watermarks, etc. Please refer to documentation > patch. Hi Sergey, First of all, I am really sorry to attend the party too late. I absolutely agree the feature is really useful and even I am thinking to support multiple comression trials on the fly for future. So I'd like to introduce the feature more general shape to be extended later so review will go. Thanks!
Hi Minchan, On (22/11/02 13:07), Minchan Kim wrote: [..] > Hi Sergey, > > First of all, I am really sorry to attend the party too late. > > I absolutely agree the feature is really useful and even I am > thinking to support multiple comression trials on the fly for > future. So I'd like to introduce the feature more general shape > to be extended later so review will go. On the fly recompression (from the same context) was what I had as a first version (which was internal and was never published), and we didn't like it at all. It's too limited, has zero flexibility, zero extensibility and has too high of a price tag attached to it (in terms of CPU cycles, power and time). So we moved it to user-space (deferred context) and this unlocked numerous possibilities: recompress only when we really need to and, more importantly, can afford it; wire in numerous metrics: battery, CPU load etc. And many more.