- A+
有时,特定进程可能会消耗更多的CPU使用量,并影响整个系统的性能。由于该特定进程消耗更多CPU,因此您无法执行其他任务。在开始新任务之前,您需要等待该过程完成。幸运的是,现在可以通过名为CPULimit的有用实用程序来解决这个问题。顾名思义,CPULimit限制了进程的CPU使用率。当您不希望它们消耗更多CPU使用时,这对于控制批处理作业非常有用。
CPULimit的主要目标是防止进程运行超过指定的时间比率。它不会更改nice值或其他调度优先级设置,而是更改实际的CPU使用率。此外,它能够动态,快速地适应整个系统负载。它适用于大多数类似Unix的发行版。在本简要指南中,我们将了解如何限制Linux中进程的CPU使用率。
使用CPULimit在Linux中限制进程的CPU使用率
安装CPULimit
CPULimit可用于大多数类Unix发行版的默认存储库。您可以使用相应Linux发行版中的默认包管理器来安装它,如下所示。
在Arch Linux及其衍生产品上:
$ sudo pacman -S cpulimit
On Debian, Ubuntu, Linux Mint:
$ sudo apt-get install cpulimit
On RHEL, CentOS, Fedora:
首先启用EPEL。
$ sudo yum install epel-release
然后,使用命令安装cpuclimit:
$ sudo yum install cpulimit
或者,
$ sudo dnf install cpulimit
On SUSE/openSUSE:
$ sudo zypper install cpulimit
用法
让我们运行一个消耗更多CPU使用率的程序。以root用户身份运行以下命令。
创建一个名为highcpu.sh的文件 。
$ vi highcpu.sh
添加以下内容。
#!/bin/bash while :; do :; done;
这个简短的程序将无休止地循环并消耗最大的CPU使用率。所以,我建议你在虚拟机中测试它。
使此文件可执行:
$ chmod +x highcpu.sh
然后,使用命令在后台运行该过程:
$ ./highcpu.sh &
输出:
[1] 2331
这里2331 是上述过程的PID。
要查看它消耗的CPU量,请使用“top”命令。
$ top
输出
top - 17:16:34 up 10 min, 2 users, load average: 1.12, 0.53, 0.26 Tasks: 87 total, 4 running, 83 sleeping, 0 stopped, 0 zombie %Cpu(s): 91.9 us, 2.7 sy, 5.4 ni, 0.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem : 630108 total, 274868 free, 85904 used, 269336 buff/cache KiB Swap: 1343484 total, 1343484 free, 0 used. 428172 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 2331 root 20 0 113120 1184 1004 R 97.7 0.2 2:40.91 highcpu.sh 2412 root 39 19 244516 11020 4496 R 1.3 1.7 0:00.11 dnf 10 root 20 0 0 0 0 S 0.3 0.0 0:00.68 rcu_sched 1 root 20 0 43900 6480 3900 S 0.0 1.0 0:01.61 systemd 2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd 3 root 20 0 0 0 0 S 0.0 0.0 0:00.06 ksoftirqd/0 6 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kworker/u2:0 7 root rt 0 0 0 0 S 0.0 0.0 0:00.00 migration/0 8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh 9 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuob/0 11 root 20 0 0 0 0 R 0.0 0.0 0:00.38 rcuos/0 12 root rt 0 0 0 0 S 0.0 0.0 0:00.02 watchdog/0 13 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 khelper 14 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kdevtmpfs 15 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 netns 16 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 perf 17 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 writeb
正如您在上面的输出中看到的,highcpu.sh进程占用的CPU使用率超过97%。由于它消耗了更多的CPU使用量,因此运行其他任务非常困难。几分钟后,您的系统可能会挂起或宕机。这是CPULimt可以帮助我们解决问题。
现在,让我们使用CPULimit工具限制此进程的CPU使用率。比方说,我们将通过PID将此过程限制为30%CPU。
为此,请运行:
$ cpulimit -l 30 -p 2331 &
这里,
- “-l 30” 将过程限制为30%
- “-p 2331”是highcpu.sh的PID
现在,让我们再次使用命令检查上述进程的CPU使用情况:
$ top
结果:
top - 17:29:16 up 5 min, 1 user, load average: 0.61, 0.57, 0.27 Tasks: 86 total, 2 running, 83 sleeping, 1 stopped, 0 zombie %Cpu(s): 7.2 us, 0.0 sy, 0.0 ni, 92.8 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem : 630108 total, 435348 free, 78052 used, 116708 buff/cache KiB Swap: 1343484 total, 1343484 free, 0 used. 442040 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 2331 root 20 0 113120 1180 1004 T 29.7 0.2 3:36.97 highcpu.sh 2334 root 9 -11 4324 692 572 S 1.7 0.1 0:00.47 cpulimit 1 root 20 0 43900 6480 3900 S 0.3 1.0 0:01.65 systemd 2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd 3 root 20 0 0 0 0 S 0.0 0.0 0:00.02 ksoftirqd/0 5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H 6 root 20 0 0 0 0 S 0.0 0.0 0:00.01 kworker/u2:0 7 root rt 0 0 0 0 S 0.0 0.0 0:00.00 migration/0 8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh 9 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuob/0 10 root 20 0 0 0 0 S 0.0 0.0 0:00.44 rcu_sched 11 root 20 0 0 0 0 R 0.0 0.0 0:00.37 rcuos/0 12 root rt 0 0 0 0 S 0.0 0.0 0:00.05 watchdog/0 13 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 khelper 14 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kdevtmpfs 15 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 netns 16 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 perf
正如您在上面的输出中看到的,highcpu.sh的CPU使用率已降至29.7%,非常接近30%。现在,您可以拥有更多的CPU资源来自由运行其他进程。
我们已经看到了如何通过PID限制进程。或者,我们可以通过指定可执行程序文件的名称来运行上述命令。
例如,上面的命令是:
$ cpulimit -l 30 ./highcpu.sh &
同样,您可以在后台启动任何进程,并根据需要限制其CPU使用率。
您可以使用“fg”命令随时将后台运行的进程置于前台:
$ fg
结果:
cpulimit -l 30 -p 2331
结论
在运行消耗更多CPU使用率的进程时,CPULimit非常有用。下次如果您注意到程序消耗更多的CPU使用率,只需使用“top”命令找到进程的PID,并使用CPULimit命令将其CPU使用率限制为最小值,如上所述。您还可以使用此应用程序来测试应用程序在低CPU使用率下的执行情况。
资源:
- 安卓客户端下载
- 微信扫一扫
- 微信公众号
- 微信公众号扫一扫