Re: [PATCH 1/2 v3] fsck.erofs: add multi-threaded decompression
Gao Xiang <[email protected]> Wed, 8 Jul 2026 10:31:10 +0800
| Newsgroups | org.ozlabs.lists.linux-erofs |
|---|---|
| Message-ID | <[email protected]> |
On 2026/7/6 14:10, Nithurshen wrote: > Hi Xiang, > > Please find the updated multi-threaded decompression implementation for > fsck.erofs. This version introduces an algorithm-aware asynchronous > worker pool, dynamically sized based on system CPUs, to significantly > accelerate the extraction of computationally expensive images. > > Benchmarks were performed on an ARM64 environment, extracting the 8.2 GB > Linux repository downloaded from Github. > > Extraction Time (Seconds): > > | Algorithm | 4k | 8k | 16k | 32k | 64k | > | --- | --- | --- | --- | --- | --- | > | lz4hc(MT) | 9.36 | 8.31 | 8.27 | 8.54 | 6.94 | > | lz4hc(ST) | 4.40 | 5.77 | 3.65 | 5.45 | 3.36 | > | zstd(MT) | 9.26 | 8.68 | 8.89 | 8.11 | 7.94 | > | zstd(ST) | 5.23 | 4.52 | 4.62 | 4.11 | 4.02 | > | lzma(MT) | 23.72 | 24.79 | 25.90 | 26.92 | 27.77 | > | lzma(ST) | 56.37 | 65.06 | 71.07 | 74.69 | 81.63 | > > Performance Analysis: > The implementation provides a significant speedup for LZMA (up to 2.9x) > as the heavy decompression workload effectively amortizes the thread > synchronization overhead. > > However, for fast algorithms like LZ4 and ZSTD, the current MT overhead > (futex contention and scheduling) leads to slower performance compared > to the synchronous baseline. > > I have tried various batch sizes for fast algorithms, but the time did > not improve. (I tried from 32 to 256 batch sizes) > > Can we fall back to synchronous extraction here? Sorry for delay. We cannot, that is why we need to find a proper way to batch the pclusters and reschedule. And that is why I asked you to benchmark each commit. Thanks, Gao Xiang > > Verification: > > * Deadlocks/Race Conditions: Verified via GDB backtrace analysis and > stress testing. > * Memory Leaks: Verified via rigorous buffer ownership tracking and > ensuring all task resources are cleaned up upon worker completion. > * Integrity: All configurations passed bit-for-bit integrity checks > between the extracted and original directory for all algorithms and > chunk sizes. > > All concurrency primitives and memory paths have been verified to the > best of my knowledge. > > Thanks, > Nithurshen