如何使用所有 CPU 内核和 Tar 压缩档案

如果您曾经不得不使用 tar,你就会知道它有多痛苦。 它通常进行得很慢,你会发现自己按 Ctrl + C 来结束任务,然后就忘了它。 但是,tar 可以使用其他一些工具,它们是利用当今大量多线程 CPU 并加快 tar 归档的好方法。 本文将向您展示如何在 Linux 中压缩档案时使 tar 使用所有内核。

了解和安装工具

这里讨论的三个主要工具是 pigz、pbzip2 和 pxz。 这些工具之间存在一些细微的差异,但差异在于 gzip、bzip2 和 xz 之间。 按照相应的顺序,压缩级别会增加,这意味着使用 gzip 压缩的存档将大于使用 xz 压缩的存档,但 gzip 自然会比 xz 花费更少的时间。 bzip2 在中间的某个地方。

每个工具名称开头的“p”表示“并行”。 多年来,并行化变得越来越重要——跨越所有 CPU 内核的效果如何。 对于像 AMD 的 Epyc 和 Threadripper 系列这样可以达到 64 个内核和 128 个线程的 CPU,了解哪些应用程序可以利用它非常重要。 这些压缩函数是主要候选者。

要安装这些工具,您只需转到您的存储库即可。

为了保持一致性,本文重点介绍 pxz。 您可以查看 pigz 的本教程。

使用 Tar 压缩档案

tar 的语法相当简单。 要仅压缩目录,您可以使用如下命令:

第一个将使用 gzip,第二个将使用 bzip2,第三个将使用 xz。 文件名和目录将根据您的操作而有所不同,但我将 Linux 内核从 GitHub 拉到我的“/home”目录中,我将使用它。 所以,我将继续并使用 time 命令在前面看需要多长时间。 您还可以看到 xz 被列为在此系统上占用我 CPU 的最高百分比,但它仅将一个核心固定为 100%。

Tar 所有内核 Tar Xz
焦油所有核心 Htop 1

而且,如您所见,我的老旧 i7-2600 需要很长时间才能压缩 Linux 5.10-rc3(大约 28 分钟)。

焦油所有核心 Xz 时间

这就是这些并行压缩工具派上用场的地方。 如果您正在压缩一个大文件并希望更快地完成它,我不能推荐这些工具。

在 Tar 中使用并行压缩工具

您可以告诉 tar 使用带有 --use-compression-program 选项,或者您可以使用更简单的命令标志 -I. 一个 example 任何这些工具的语法如下:

让我们测试一下,看看我的系统需要多长时间来压缩 Linux 内核并访问我的 CPU 的所有八个线程。 你可以看到我的 htop 读数显示所有线程因 pxz 而固定在 100% 的使用率。

焦油 所有核心 焦油 Pxz
焦油所有核心 Htop 2

您可以看到压缩该存档所需的时间大大减少(大约 7 分钟!),这就是多任务处理。 我有一个在后台运行的虚拟机,我现在正在做一些网页浏览。 Linux 内核硬件调度程序将为您提供您个人所需的东西,所以如果您离开了您的 pxz 命令在系统上不运行任何其他东西的情况下运行,您可以更快地完成它。

焦油所有内核 Pxz 时间

使用 pigz、pbzip2 和 pxz 调整压缩级别

您还可以将压缩级别传递给 pxz 以使文件更小。 这将需要更多的 RAM、CPU 和时间,但如果您真的需要获取一个小文件,这是值得的。 这是两个命令及其结果的并排比较。

焦油所有核心焦油 Pxz 9
焦油所有核心 Pxz 9 时间
Tar 所有核心压缩比较

压缩并没有那么大,而且时间不一定值得,但如果每兆字节都很重要,它仍然是一个不错的选择。

我希望你喜欢这个使用所有内核使用 tar 压缩档案的指南。 请务必查看我们的其他一些 Linux 内容,例如如何为 Linux 构建新 PC、掌握 Apt 并成为 Apt 大师,以及如何在 Raspberry Pi 上安装 Arch Linux。

订阅我们的新闻!

我们最新的教程直接发送到您的收件箱

注册所有时事通讯。 注册即表示您同意我们的隐私政策并且欧洲用户同意数据传输政策。 我们不会共享您的数据,您可以随时取消订阅。 订阅