Re: [PATCH v4] erofs: relaxed temporary buffers allocation on readahead

From: Yue Hu
Date: Fri Jan 26 2024 - 20:50:07 EST


On Fri, 26 Jan 2024 22:01:42 +0800
Gao Xiang <hsiangkao@xxxxxxxxxxxxxxxxx> wrote:

> From: Chunhai Guo <guochunhai@xxxxxxxx>
>
> 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/20240109074143.4138783-1-guochunhai@xxxxxxxx
>
> Suggested-by: Gao Xiang <xiang@xxxxxxxxxx>
> Signed-off-by: Chunhai Guo <guochunhai@xxxxxxxx>
> Signed-off-by: Gao Xiang <hsiangkao@xxxxxxxxxxxxxxxxx>

Reviewed-by: Yue Hu <huyue2@xxxxxxxxxxx>