我正在使用 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的回答,如果你想给bzip进程最大的低优先级,这样当其他进程受到的影响最小时,你应该ionice另外使用。请注意,这ionice仅在使用CFQIO 调度程序时有用(内核上的默认设置,但这可能已被您的安装调整)。ionice如果您使用deadline或noopIO 调度程序,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 可以尽可能快地运行。但如果其他进程需要,它会优先考虑其他进程。这是推荐的选择。
现在您仍然可以在 bzip 上使用“CPU 限制”。这不是我的选择,但如果你想尝试或更喜欢它,你应该使用cpulimit. 但是,它并不经常打包或在默认的 Linux 安装中。所以你必须安装它。NixCraft有一个很好的文档如何安装和使用cpulimit。
官方网址为:http : //cpulimit.sourceforge.net/