Skip to content

Parallelize ld.lld --compress-debug-sections=zstd #57685

@MaskRay

Description

@MaskRay

[ELF] Parallelize --compress-debug-sections=zlib parallelized --compress-debug-sections=zlib with an approach like a simplified pigz. ld.lld recently got zstd support (see https://maskray.me/blog/2022-09-09-zstd-compressed-debug-sections for context). I have a pending patch to parallelize --compress-debug-sections=zstd with zstd API: https://reviews.llvm.org/D133679

@Cyan4973 @terrelln it will be great to have your input on how to use the parallel zstd API :)

A test program (see z.cc in D133679's comment) using ZSTD_CCtx_setParameter(cctx, ZSTD_c_nbWorkers, th) + ZSTD_compressStream2 appears slower than the zstd cli (compiled from the same build). I do not know whether the additional performance gap is due to zstd cli's reading thread (which is difficult to leverage in the linker) or other feature I have missed.

zstd/contrib/pzstd appears to use an approach similar to pigz and https://reviews.llvm.org/D117853 . Does the approach leverage parallelism more than the ZSTD_c_nbWorkers API?

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions