我正在使用 bzip2 来压缩文件,该过程占用的 cpu 超过 100%。有没有办法以最小的 CPU 百分比运行 bzip2。
答案1
此进程是否会干扰系统上的其他进程?为什么要限制 bzip2 使用的 CPU?
您可以使用以下nice
命令更改进程的优先级:
$ nice -n 19 bzip2 <file>
此外,您可以尝试降低bzip2
压缩级别:
$ bzip2 -1 <file>
答案2
推荐:使用优先级
除了@EEAA答案之外,如果您想为 bzip 进程提供最大的低优先级,以便其他进程受到的影响最小,您应该ionice
另外使用。请注意,这仅在使用IO 调度程序(内核上的默认设置,但这可以通过您的安装进行调整)ionice
时有用。如果您使用或IO 调度程序,则不会有任何影响。CFQ
ionice
deadline
noop
要验证您正在使用哪个 IO 调度程序:
cat /sys/block/<DEVICE>/queue/scheduler
<DEVICE>
你的硬盘设备在哪里,例如sda
现在使用ionice
,您想要设置最低的 IO 优先级,即 3 类。您可以将其组合在一起nice
:
$ nice -n 19 ionice -c3 bzip2 <file>
正如 Tom 和 EEAA 所解释的,这已经足够好了。当没有其他进程需要 CPU 或 IO 时,内核将确保 bzip 能够尽可能快地运行。但如果其他进程需要的话,它会优先考虑它们。这是推荐的选择。
替代方案: cpulimit - 限制 CPU 使用率
现在您仍然可以在 bzip 上使用“CPU 限制”。这不是我的选择,但如果您想尝试或更好地喜欢它,您应该使用cpulimit
.但是,它通常不会打包或默认安装在 Linux 中。所以你必须安装它。尼克斯克拉夫特有一个很好的文档如何安装和使用cpulimit
。
官方网站是:http://cpulimit.sourceforge.net/