网站搜索

CPUTool - 限制和控制 Linux 中任何进程的 CPU 使用率


Linux 性能监控的关键领域之一是 CPU 使用率和系统负载。有几种 Linux 性能监控工具可以监视系统上的情况。

其中许多工具只是输出系统状态/统计数据,而其他一些工具则为您提供管理系统性能的方法。一个这样的工具称为CPUTool

CPUTool 是一个简单但功能强大的命令行工具,用于将任何进程的 CPU 使用率限制和控制到给定限度,并允许在系统负载超过定义的阈值时中断进程执行。

CPUTool 是如何工作的?

为了限制CPU的使用,cputool会向进程发送SIGSTOPSIGCONT信号,这由系统负载决定。它依赖 /proc 伪文件系统来读取 PID 及其 CPU 使用率测量值。

它可用于将受单个进程或一组进程影响的CPU使用率或系统负载限制到给定限制和/或在系统负载超过阈值时挂起进程。

建议阅读: 了解 Linux 负载平均值并监控 Linux 性能

安装CPUTool以限制CPU使用率和平均负载

CPUTool 只能使用包管理工具从默认系统存储库安装在 Debian/Ubuntu 及其衍生版本上。

sudo apt install cputool

使用 CUPTool 限制进程 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 Web 服务器:

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 性能监控:

  1. 在 Linux 上获取 CPU 信息的 9 个有用命令
  2. Cpustat – 通过在 Linux 中运行进程来监控 CPU 利用率
  3. CoreFreq – 适用于 Linux 系统的强大 CPU 监控工具
  4. 根据 Linux 中内存和 CPU 使用率最高的情况查找运行最多的进程

总而言之,CPUTool 对于 Linux 性能管理确实派上用场。请通过下面的反馈表分享您对本文的看法。