Re: [RFC PATCH 0/3] Introduce per-cgroup compression priority
Shakeel Butt <[email protected]> Mon, 27 Oct 2025 10:29:06 -0700
| Newsgroups | dev.linux.lists.drbd-dev,org.kernel.vger.cgroups,org.kernel.vger.linux-block,org.kernel.vger.linux-doc,org.kernel.vger.linux-kernel,org.kvack.linux-mm |
|---|---|
| Message-ID | <k6jwua5rlkds7dxomwvxotwtjq4hauyevvyoxd5hjz733k7kk5@mmezlradxhpu> |
Hi Jinji, On Sun, Oct 26, 2025 at 01:05:07AM +0000, jinji zhong wrote: > Hello everyone, > > On Android, different applications have varying tolerance for > decompression latency. Applications with higher tolerance for > decompression latency are better suited for algorithms like ZSTD, > which provides high compression ratio but slower decompression > speed. Conversely, applications with lower tolerance for > decompression latency can use algorithms like LZ4 or LZO that > offer faster decompression but lower compression ratios. For example, > lightweight applications (with few anonymous pages) or applications > without foreground UI typically have higher tolerance for decompression > latency. > > Similarly, in memory allocation slow paths or under high CPU > pressure, using algorithms with faster compression speeds might > be more appropriate. > > This patch introduces a per-cgroup compression priority mechanism, > where different compression priorities map to different algorithms. > This allows administrators to select appropriate compression > algorithms on a per-cgroup basis. > > Currently, this patch is experimental and we would greatly > appreciate community feedback. I'm uncertain whether obtaining > compression priority via get_cgroup_comp_priority in zram is the > best approach. While this implementation is convenient, it seems > somewhat unusual. Perhaps the next step should be to pass > compression priority through page->private. > Setting aside the issues in the implementation (like changing compression algorithm of a cgroup while it already has some memory compressed using older algo), I don't think memcg interface is the right way to go about it. We usually add interfaces to memcg that have hierarchical semantics. Anyways if you want to have this feature, I think BPF might be the way to get this flexibility without introducing any stable API and then you can experiment and evaluate if this really helps.