On Fri, 26 Jan 2024 22:01:42 +0800 Gao Xiang <[email protected]> wrote:
> From: Chunhai Guo <[email protected]> > > Even with inplace decompression, sometimes very few temporary buffers > may be still needed for a single decompression shot (e.g. 16 pages for > 64k sliding window or 4 pages for 16k sliding window). In low-memory > scenarios, it would be better to try to allocate with GFP_NOWAIT on > readahead first. That can help reduce the time spent on page allocation > under durative memory pressure. > > Here are detailed performance numbers under multi-app launch benchmark > workload [1] on ARM64 Android devices (8-core CPU and 8GB of memory) > running a 5.15 LTS kernel with EROFS of 4k pclusters: > > +----------------------------------------------+ > | LZ4 | vanilla | patched | diff | > |----------------+---------+---------+---------| > | Average (ms) | 3364 | 2684 | -20.21% | [64k sliding window] > |----------------+---------+---------+---------| > | Average (ms) | 2079 | 1610 | -22.56% | [16k sliding window] > +----------------------------------------------+ > > The total size of system images for 4k pclusters is almost unchanged: > (64k sliding window) 9,117,044 KB > (16k sliding window) 9,113,096 KB > > Therefore, in addition to switch the sliding window from 64k to 16k, > after applying this patch, it can eventually save 52.14% (3364 -> 1610) > on average with no memory reservation. That is particularly useful for > embedded devices with limited resources. > > [1] https://lore.kernel.org/r/[email protected] > > Suggested-by: Gao Xiang <[email protected]> > Signed-off-by: Chunhai Guo <[email protected]> > Signed-off-by: Gao Xiang <[email protected]> Reviewed-by: Yue Hu <[email protected]>
