使用 cpulimit 释放你的 CPU

[ad_1]

在 Linux 系统上管理系统资源的推荐工具是 群组. 虽然在可以调整的限制类型(CPU、内存、磁盘 I/O、网络等)方面非常强大,但配置 cgroup 并非易事。 这 好的 命令自 1973 年以来一直可用。但它只调整在处理器上竞争时间的进程之间的调度优先级。 nice 命令不会限制进程每单位时间可以消耗的 CPU 周期百分比。 这 处理器限制 命令提供了两全其美的优势。 它限制了进程每单位时间可以分配的 CPU 周期百分比,并且相对容易调用。

cpulimit 命令主要用于长时间运行和 CPU 密集型进程。 编译软件和转换视频是长时间运行进程的常见示例,这些进程可以最大限度地利用计算机的 CPU。 限制此类进程的 CPU 使用率将释放处理器时间以供可能在计算机上运行的其他任务使用。 限制 CPU 密集型进程还可以降低系统的功耗、热量输出以及可能的风扇噪音。 限制进程的 CPU 使用率的代价是它需要更多的时间来运行完成。

安装 cpulimit

cpulimit 命令在默认情况下可用 Fedora Linux 存储库。 运行以下命令以在计算机上安装 cpulimit Fedora Linux系统。

$ sudo dnf install cpulimit

查看 cpulimit 的文档

cpulimit 包没有附带手册页。 使用以下命令查看 cpulimit 的内置文档。 下面提供了输出。 但是您可能希望在您自己的系统上运行该命令,以防选项在撰写本文后发生变化。

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

示范

为了演示如何使用 cpulimit 命令,下面提供了一个人为的计算密集型 Python 脚本。 该脚本首先无限制运行,然后以 50% 的限制运行。 它计算第 42 个的值 斐波那契数. 在这两种情况下,脚本都作为 time 命令的子进程运行,以显示计算答案所需的总时间。

$ /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=" ")'
267914296 (computed in 51.80 seconds)
$ /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=" ")'
267914296 (computed in 127.38 seconds)

运行该命令的第一个版本时,您可能会听到 PC 上的 CPU 风扇加速。 但是在运行第二个版本时不应该这样做。 该命令的第一个版本不受 CPU 限制,但不应导致您的 PC 陷入困境。 它的编写方式使其最多只能使用一个 CPU。 大多数现代 PC 都有多个 CPU,当其中一个 CPU 100% 忙碌时,可以轻松地同时运行其他任务。 要验证第一个命令是否最大化您的一个处理器,请在单独的终端窗口中运行 top 命令并按 1 钥匙。 按下 退出 top 命令的键。

将限制设置为 100% 以上仅对能够执行以下操作的程序有意义 任务并行. 对于此类程序,每增加 100% 表示 CPU 的完全利用率(200% = 2 个 CPU,300% = 3 个 CPU,等等)。

请注意, -一世 选项已传递给上述示例中的 cpulimit 命令。 这是必要的,因为要限制的命令不是 cpulimit 命令的直接子进程。 相反,它是 time 命令的子进程,而 time 命令又是 cpulimit 命令的子进程。 没有 -一世 选项, cpulimit 只会限制时间命令。

最后的笔记

如果您想限制从桌面图标启动的图形应用程序,请将应用程序的 .desktop 文件(通常位于 /usr/share/applications 目录下)复制到您的 ~/.local/share/applications 目录并修改 Exec相应地行。 然后运行以下命令以应用更改。

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

[ad_2]

Related Posts