tar
我有 37 GiB 文件,由+创建xz
。我有一台 6 核服务器,因此为了获得最大压缩速度,我想使用此命令使用我的所有 6 个核心
XZ_OPT='-T0 -9 –memory=75%' tar -cJf mydir.tar.xz mydir
而且速度非常快。我该怎么做才能使用所有核心进行解压缩?
tar -xvf mydir.tar.xz
仅使用 1 个核心进行减压
答案1
通常,压缩是瓶颈,因此大多数压缩库都不支持线程解压缩。引用 xz 手册页:
线程解压尚未实现。它只适用于包含多个块的文件,且块头中包含大小信息。所有以多线程模式压缩的文件都符合此条件,但以单线程模式压缩的文件即使使用 --block-size=size 也不行。
答案2
从 xz 5.4.1(2022 年 12 月)开始,支持使用 进行并行解压缩-T0
。但是,tar 文件格式需要顺序读取,因此需要一些最多为 thread_count * block_size 的缓冲。我不确定 xz 是否有这种缓冲来支持管道。