new*_*ro9 21 cpu ram resource-limiting
我使用的是带有 SFTP 和控制台的 Ubuntu VPS。我需要一个特定的进程来仅使用 60% 的 CPU 和 2048 MB 的 RAM。
我还需要另一个进程仅使用 30% 的 CPU 和 1024MB 的 RAM。
如何限制进程的 CPU 和 RAM 使用量?
mat*_*igo 20
请注意:这里有龙。
\n当您开始在这种程度上专门控制应用程序/进程/线程的资源时,当需要调试速率限制未考虑到的问题时,您就开始打开字面上的潘多拉问题盒子。
\n也就是说,如果您相信自己知道自己在做什么,则可以使用三个选项:nice、cpulimit和控制组 (Cgroup)。
以下是这三种方法的 TL;DR:
\n不错\xe2\x87\xa2nice {process}
这是一种非常简单的确定任务优先级的方法,对于“一次性”使用非常有效,例如降低长时间运行、计算量大的任务的优先级,该任务在机器不使用时应该使用更多的 CPU通过其他任务(或人)。
\nCPU 限制\xe2\x87\xa2cpulimit -l 60 {process}
如果您的服务器性能在 CPU 使用率超过一定量时受到影响(又称停顿),则cpulimit可以帮助减轻系统压力。它通过以不同的时间间隔暂停进程,通过向进程发送信号SIGSTOP将其保持在定义的上限之下来实现这一点。不会改变进程的值,而是监视和控制现实世界的 CPU 使用情况。SIGCONTcpulimitnice
cpulimit当您想要确保进程不使用超过 CPU 的特定部分时(您的问题提到了这一点),您会发现这很有用,但缺点是进程无法使用所有可用的 CPU 时间,当系统空闲(nice允许)。
C组
\nsudo cgcreate -g cpu:/restrained\nsudo cgset -r cpu.shares=768 restrained\nsudo cgexec -g cpu: restrained {process}\nRun Code Online (Sandbox Code Playgroud)\nCgroups \xe2\x80\x94 控制组 \xe2\x80\x94 是 Linux 内核中内置的一项功能,使您能够控制资源的分配方式。使用 Cgroup,您可以指定分配给组的进程可以使用多少 CPU、内存、带宽或这些资源的组合。
\nnice与 Cgroup相比,Cgroup 的一个关键优势cpulimit是限制适用于一组进程;不只是一个。nice并且cpulimit还仅限于限制进程的CPU使用率,而Cgroups可以限制其他进程资源。
如果您深入 Cgroup 的兔子洞,那么您可以针对一组特定的任务对系统进行超级优化。
\ncoc*_*mac 12
注意:如果您不想给进程设置硬限制,而只是设置优先级,请查找命令
nice。这个答案假设你想要一个硬性限制。
这个对另一个问题的精彩回答很好地解释了这一点
安装cpu限制
Run Code Online (Sandbox Code Playgroud)sudo apt-get install cpulimit它提供了不同的方法来限制进程的 CPU 使用率
foo,比如 20%
通过其进程名称:
sudo cpulimit -e foo -l 20.通过其绝对路径名:
sudo cpulimit -P /usr/bin/foo -l 20通过其PID:
- 查找进程的PID:
pidof foo。(比如说,它输出 1881)sudo cpulimit -p 1881 -l 20
有关更多选项,请参阅这篇有关如何限制 RAM 使用的文章。
例如,要将进程 12345 的 RAM 使用量限制为 2048 MB,您可以使用以下prlimit命令
$ prlimit --pid 12345 --as=2048000000
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
31681 次 |
| 最近记录: |