Hi Andrew, On Wed, Nov 28, 2018 at 03:35:59PM -0800, Andrew Morton wrote: > On Tue, 27 Nov 2018 14:54:27 +0900 Minchan Kim <minc...@kernel.org> wrote: > > > This patch supports new feature "zram idle/huge page writeback". > > On zram-swap usecase, zram has usually many idle/huge swap pages. > > It's pointless to keep in memory(ie, zram). > > > > To solve the problem, this feature introduces idle/huge page > > writeback to backing device so the goal is to save more memory > > space on embedded system. > > > > Normal sequence to use idle/huge page writeback feature is as follows, > > > > while (1) { > > # mark allocated zram slot to idle > > echo all > /sys/block/zram0/idle > > # leave system working for several hours > > # Unless there is no access for some blocks on zram, > > # they are still IDLE marked pages. > > > > echo "idle" > /sys/block/zram0/writeback > > or/and > > echo "huge" > /sys/block/zram0/writeback > > # write the IDLE or/and huge marked slot into backing device > > # and free the memory. > > } > > > > By per discussion: > > https://lore.kernel.org/lkml/20181122065926.GG3441@jagdpanzerIV/T/#u, > > > > This patch removes direct incommpressibe page writeback feature > > (d2afd25114f4, zram: write incompressible pages to backing device) > > so we could regard it as regression because incompressible pages > > doesn't go to backing storage automatically. Instead, usre should > > do it via "echo huge" > /sys/block/zram/writeback" manually. > > I'm not in any position to determine the regression risk here. > > Why is that feature being removed, anyway?
Below concerns from Sergey: https://lore.kernel.org/lkml/20181122065926.GG3441@jagdpanzerIV/T/#u == &< == "IDLE writeback" is superior to "incompressible writeback". "incompressible writeback" is completely unpredictable and uncontrollable; it depens on data patterns and compression algorithms. While "IDLE writeback" is predictable. I even suspect, that, *ideally*, we can remove "incompressible writeback". "IDLE pages" is a super set which also includes "incompressible" pages. So, technically, we still can do "incompressible writeback" from "IDLE writeback" path; but a much more reasonable one, based on a page idling period. I understand that you want to keep "direct incompressible writeback" around. ZRAM is especially popular on devices which do suffer from flash wearout, so I can see "incompressible writeback" path becoming a dead code, long term. == &< == My concern is if we enable CONFIG_ZRAM_WRITEBACK in this implementation, both hugepage/idlepage writeck will turn on. However someuser want to enable only idlepage writeback so we need to introduce turn on/off knob for hugepage or new CONFIG_ZRAM_IDLEPAGE_WRITEBACK for those usecase. I don't want to make it complicated *if possible*. Long term, I imagine we need to make VM aware of new swap hierarchy a little bit different with as-is. For example, first high priority swap can return -EIO or -ENOCOMP, swap try to fallback to next lower priority swap device. With that, hugepage writeback will work tranparently. > > > If we hear some regression, we could restore the function. > > Why not do that now? > We want to remove it at this moment.