如何以最小的 cpu 百分比 bzip 文件?

7 cpu ubuntu gzip bzip2

我正在使用 bzip2 压缩文件,该过程需要超过 100% 的 cpu。有没有办法以最小的 CPU 百分比运行 bzip2。

EEA*_*EAA 11

此进程是否会干扰您系统上的其他进程?为什么要限制 bzip2 使用的 CPU?

您可以使用该nice命令来更改进程的优先级:

$ nice -n 19 bzip2 <file>
Run Code Online (Sandbox Code Playgroud)

此外,您可以尝试降低bzip2压缩级别:

$ bzip2 -1 <file>
Run Code Online (Sandbox Code Playgroud)

  • 澄清 EEAA 在说什么:使用 100% CPU 没有任何问题。这就是您想要的,因为它是最快的。当处理器无事可做时,它将始终使用 100% 的 CPU。当处理器有其他事情要处理时,它将平衡任务并共享 CPU。通过设置 nice 值,您告诉内核 bzip 不像其他进程那么重要,因此它应该在将其交给 bzip 之前给其他进程 CPU 时间。不要太担心百分比。 (6认同)
  • 那么系统上还有其他事情发生吗?你没有回答我的问题——你为什么要这样做?`nice` 命令所做的就是改变优先级,所以如果服务器上没有其他 CPU 密集型任务发生,那么是的,`bzip2` 会很乐意占用你所有的 CPU,你真的无能为力或不应该做任何事情那。 (4认同)
  • @dddddd - 那么别担心。如果您使用 `nice 19` 运行 bzip 命令,那么它在内核调度程序中的优先级将远低于其他进程。不过,您仍然需要担心 IO 争用等问题,因为压缩/解压缩也是 IO 密集型的。 (2认同)

Huy*_*ens 6

推荐:使用优先级

除了@EEAA的回答,如果你想给bzip进程最大的低优先级,这样当其他进程受到的影响最小时,你应该ionice另外使用。请注意,这ionice仅在使用CFQIO 调度程序时有用(内核上的默认设置,但这可能已被您的安装调整)。ionice如果您使用deadlinenoopIO 调度程序,AFAIK 将无效。

要验证您使用的是哪个 IO 调度程序:

cat /sys/block/<DEVICE>/queue/scheduler
Run Code Online (Sandbox Code Playgroud)

<DEVICE>你的硬盘设备在哪里,例如sda

现在使用ionice,您要设置最低 IO 优先级,即类 3。您可以将其与nice

$ nice -n 19 ionice -c3 bzip2 <file>
Run Code Online (Sandbox Code Playgroud)

正如 Tom 和 EEAA 所解释的那样,这已经足够了。当没有其他进程需要 CPU 或 IO 时,内核将确保 bzip 可以尽可能快地运行。但如果其他进程需要,它会优先考虑其他进程。这是推荐的选择。

替代方案:cpulimit - 限制在 Pourcentage 中的 CPU 使用率

现在您仍然可以在 bzip 上使用“CPU 限制”。这不是我的选择,但如果你想尝试或更喜欢它,你应该使用cpulimit. 但是,它并不经常打包或在默认的 Linux 安装中。所以你必须安装它。NixCraft有一个很好的文档如何安装和使用cpulimit
官方网址为:http : //cpulimit.sourceforge.net/