如何让linux进程独占cpu运行,如何在Linux中限制进程的CPU使用率 互联网技术圈 互联网技术圈...

2d226bafed7ca9f721961734e3b28129.png

有时,特定进程可能会消耗更多的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使用率下的执行情况。

资源:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值