服务器之家:专注于服务器技术及软件下载分享
分类导航

Linux|Centos|Ubuntu|系统进程|Fedora|注册表|Bios|Solaris|Windows7|Windows10|

服务器之家 - 服务器系统 - Linux - 使用 cpulimit 来释放你的 CPU

使用 cpulimit 来释放你的 CPU

2021-06-21 23:32Linux中国Gregory Bartholomew Linux

cpulimit 命令主要对长期运行的和 CPU 密集型的进程有用。编译软件和转换视频是长期运行的进程的常见例子,它们可以使计算机的 CPU 使用率达到最大。限制这类进程的 CPU 使用率将释放出处理器时间,供计算机上可能运行的其他任

使用 cpulimit 来释放你的 CPU

在 Linux 系统上管理系统资源的推荐工具是 cgroups。虽然在可以调整的限制方面(CPU、内存、磁盘 I/O、网络等)非常强大,但配置 cgroups 并不简单。nice 命令从 1973 年起就可以使用了。但它只是调整在一个处理器上竞争时间的进程之间的调度优先级。nice 命令不会限制一个进程在单位时间内所能消耗的 CPU 周期的百分比。cpulimit 命令提供了两个世界的最佳方案。它限制了一个进程在每单位时间内可以分配的 CPU 周期的百分比,而且相对容易调用。

cpulimit 命令主要对长期运行的和 CPU 密集型的进程有用。编译软件和转换视频是长期运行的进程的常见例子,它们可以使计算机的 CPU 使用率达到最大。限制这类进程的 CPU 使用率将释放出处理器时间,供计算机上可能运行的其他任务使用。限制 CPU 密集型进程也将减少功耗及热输出,并可能减少系统的风扇噪音。限制一个进程的 CPU 使用率的代价是,它需要更多的时间来完成运行。

安装 cpulimit

 

cpulimit 命令在默认的 Fedora Linux 仓库中可用。运行下面的命令,在 Fedora Linux 系统上安装 cpulimit

  1. $ sudo dnf install cpulimit

查看 cpulimit 的文档

 

cpulimit 软件包并没有附带的手册页。使用下面的命令来查看 cpulimit 的内置文档。输出结果在下面提供。但你可能需要在你自己的系统上运行该命令,以防止自本文编写以来选项发生变化。

  1. $ cpulimit --help
  2. Usage: cpulimit [OPTIONS…] TARGET
  3. OPTIONS
  4. -l, --limit=N percentage of cpu allowed from 0 to 800 (required)
  5. -v, --verbose show control statistics
  6. -z, --lazy exit if there is no target process, or if it dies
  7. -i, --include-children limit also the children processes
  8. -h, --help display this help and exit
  9. TARGET must be exactly one of these:
  10. -p, --pid=N pid of the process (implies -z)
  11. -e, --exe=FILE name of the executable program file or path name
  12. COMMAND [ARGS] run this command and limit it (implies -z)

演示

 

为了演示 cpulimit 命令的使用方式,下面提供了一个精心设计的、计算量很大的 Python 脚本。该脚本首先在没有限制的情况下运行,然后在限制为 50% 的情况下运行。它计算的是第 42 个 斐波那契数 的值。该脚本在这两种情况下都作为 time 命令的子进程运行,以显示计算答案所需的总时间。

  1. $ /bin/time -f '(computed in %e seconds)' /bin/python -c 'f = lambda n: n if n<2 else f(n-1)+f(n-2); print(f(42), end=" ")'
  2. 267914296 (computed in 51.80 seconds)
  3. $ /bin/cpulimit -i -l 50 /bin/time -f '(computed in %e seconds)' /bin/python -c 'f = lambda n: n if n<2 else f(n-1)+f(n-2); print(f(42), end=" ")'
  4. 267914296 (computed in 127.38 seconds)

当运行第一个版本的命令时,你可能会听到电脑上的 CPU 风扇转动起来。但在运行第二个版本时,你应该不会。第一个版本的命令不受 CPU 的限制,但它不应该导致你的电脑陷入瘫痪。它是以这样一种方式编写的:它最多只能使用一个 CPU 核心。大多数现代 PC 都有多个 CPU 核心,当其中一个 CPU 100% 繁忙时,可以毫无困难地同时运行其他任务。为了验证第一条命令是否使你的一个处理器达到最大,在一个单独的终端窗口中运行 top 命令并按下 1 键。要退出 top 命令可以按 Q 键。

设置高于 100% 的限制只对能够进行 任务并行化 的程序有意义。对于这样的程序,高于 100% 的增量代表一个 CPU 的全部利用率(200%=2 个CPU,300%=3 个CPU,等等)。

注意,在上面的例子中,-i 选项已经传递给 cpulimit 命令。这是必要的,因为要限制的命令不是 cpulimit 命令的直接子进程。相反,它是 time 命令的一个子进程,而后者又是 cpulimit 命令的一个子进程。如果没有 -i 选项,cpulimit 将只限制 time 命令。

最后说明

 

如果你想限制一个从桌面图标启动的图形程序,请将该程序的 .desktop 文件(通常位于 /usr/share/applications 目录下)复制到你的 ~/.local/share/applications 目录下,并相应修改 Exec 行。然后运行下面的命令来应用这些变化:

  1. $ update-desktop-database ~/.local/share/applications

原文链接:https://linux.cn/article-13501-1.html

延伸 · 阅读

精彩推荐
  • LinuxLinux系统对网站数据定期自动备份与删除

    Linux系统对网站数据定期自动备份与删除

    首先工作中需要网站文件和数据库需要每天自动备份,然后备份目录超过一定时间的删除,这个功能在linux系统中该如何实现?下面请看脚本之家分享的解...

    Linux教程网3932019-10-27
  • LinuxLinux下终端多路复用器screen命令的使用技巧

    Linux下终端多路复用器screen命令的使用技巧

    在本教程中,您学习了如何使用 Gnu Screen 。现在,您可以开始使用 Screen 实用程序,从单个会话创建多个 screen 窗口,在窗口之间导航,分离和恢复 screen 会...

    Linux公社1822020-11-19
  • Linux在Linux的命令行中操作屏幕录制的方法

    在Linux的命令行中操作屏幕录制的方法

    这篇文章主要介绍了在Linux的命令行中操作屏幕录制的方法,适用于操作script和scriptreplay两个内置软件,需要的朋友可以参考下 ...

    大步's Blog2342019-09-12
  • LinuxLinux查看磁盘空间与磁盘空间管理

    Linux查看磁盘空间与磁盘空间管理

    今天上班的时候,发现访问网站的时候出现了502错误。排除了配置和异常问题后,猜测是磁盘满的问题造成的。用df看了下,果然磁盘满了,切换到对应的...

    Linux之家3682019-06-25
  • LinuxLinux下的多线程编程实例解析

    Linux下的多线程编程实例解析

    这篇文章主要介绍了Linux下的多线程编程实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下...

    寻觅左岸2752020-07-23
  • Linux在Linux服务器上做备份时需要考虑的细节

    在Linux服务器上做备份时需要考虑的细节

    如果您进行一般备份,以每日为基础较好,您将会有助於减少档案的损失,并且增加复原程度,接下来将介绍在Linux服务器上做备份时需要考虑的因素,需要的...

    服务器之家2392019-12-13
  • LinuxLinux中安装SSL协议依赖库OpenSSL的教程

    Linux中安装SSL协议依赖库OpenSSL的教程

    OpenSSL是用C语言编写的支持SSL协议的库,是SSL协议加密技术方面最常用到的工具,本文我们就来简单总结一下Linux中安装SSL协议依赖库OpenSSL的教程...

    lucifercn6832019-06-14
  • LinuxLinux操作系统支持常用的文件系统有哪些?

    Linux操作系统支持常用的文件系统有哪些?

    Linux操作系统支持常用的文件系统有哪些?下面简单说明了Linux操作系统所支持的几个大家常用的文件系统的主要的大家关心的特点,比如,单个文件大小的...

    服务器之家6292019-10-11