Linux性能监控下的一个关键领域必须是CPU使用率和系统负载。有几种Linux性能监控工具可以监视系统上的情况。
A number of these tools simply output the system state/statistics while a few others provide you means of managing system performance. One such tool called CPUTool.
CPUTool是一个简单而强大的命令行工具,用于限制和控制任何进程的CPU利用率到指定的限制,并允许在系统负载超过定义的阈值时中断进程执行。
CPUTool如何工作?
为了限制CPU使用率,cputool向进程发送SIGSTOP和SIGCONT信号,这由系统负载确定。它依赖于/proc伪文件系统来读取PIDs及其CPU使用度量。
它可以用于将受单个进程或一组进程影响的CPU使用率或系统负载限制到给定限制,并且/或者在系统负载超过阈值时挂起进程。
建议阅读: 理解Linux负载平均值并监控Linux性能
安装 CPUTool 以限制 CPU 使用率和负载平均值
A CPUTool is only available to install on Debian/Ubuntu and its derivatives from the default system repositories using package management tool.
$ sudo apt install cputool
使用 CPUTool 限制进程 CPU 使用率
现在让我们看看 CPUTool 的真正工作原理。为了演示全部内容,我们将在后台运行一个 dd 命令,这应该会导致高 CPU 百分比,并显示其 PID。
# dd if=/dev/zero of=/dev/null &
要监视 CPU 使用率,我们可以使用 top 或 glances 工具,这些工具允许我们查看运行中的 Linux 系统进程的实时定期更新状态:
# top

从上面的输出中,我们可以看到 dd 命令 具有最高的 CPU 时间百分比 99.7%)
现在我们可以使用如下所示的 cputool 进行限制。
使用 --cpu-limit
或 -c
标志设置进程或一组进程的使用百分比,并使用 -p
指定 PID。以下命令将限制 dd 命令(PID 8275)使用一个 CPU 核心的 50%:
# cputool --cpu-limit 50 -p 8275
运行 cputool 后,我们可以再次检查进程(PID 8275)的新 CPU 使用情况。现在 dd 进程的 CPU 使用情况应该在 (49.0%-52.0%) 范围内。
# top

为了进一步将 dd 的 CPU 使用率限制为 20%,我们可以再次运行 cputool:
# cputool --cpu-limit 20 -p 8275
然后立即使用诸如top或glances之类的工具进行检查(此时dd的 CPU 使用率应在19.0%-22.0%范围内或略有超出):
# top

请注意,当 cputool 正在运行时,shell 不需要任何用户输入;因此会变得无响应。要终止它(这将终止 CPU 使用率限制操作),请按Ctrl + C
。
重要的是,要为进程组(一个具有几个运行实例且每个实例具有不同 PID 的程序)指定,例如 HTTP 网页服务器:
# pidof apache2 9592 3643 3642 3641 3640 3638 3637 1780
使用-P
标志如下:
# cputool --cpu-limit 20 -P 1780
使用 CUPTool 限制系统负载
使用-l
选项来指定系统可以经受的最大负载,以使进程或进程组继续运行。我们可以使用分数值(例如2.5)。
以下示例意味着仅当系统负载不超过3.5时才运行rsync进行本地备份:
# cputool --load-limit 3.5 --rsync -av /home/tecmint /backup/`date +%Y-%m-%d`/
有关更多信息和用法,请参阅 CPUTool 手册:
# man cputool
请查看以下有关查找 CPU 信息和 CPU 性能监控的有用指南:
- 在Linux上获取CPU信息的9个有用命令
- Cpustat – 在Linux中监视运行进程的CPU利用率
- CoreFreq – 用于Linux系统的强大CPU监控工具
- 在Linux中按最高内存和CPU使用率查找顶级运行进程
总之,CPUTool 对于Linux性能管理非常实用。请通过下面的反馈表分享您对本文的想法。
Source:
https://www.tecmint.com/cputool-limit-linux-process-cpu-usage-load/