如何限制进程的CPU使用率?

Swi*_* Xu 5 linux cpu cpu-usage

我想限制 GPU 服务器中进程的 CPU 使用率。我找到了一些方法,“ nice”或“ cpulimit”。但它们并不完全是我想要的。
cpulimit允许一个进程以它想要的速度运行,直到它超过一个百分比,然后它会得到一个 SIGSTOP,然后是一个睡眠和一个 SIGCONT。
但我不希望超过百分比的过程进入睡眠状态。我只是希望它不要超过一定的百分比。并保持它以正常方式运行。

例如,当我运行时cpulimit -p 1111 -l 30,终端将是
[1]+ Stopped
这不是我想要的。

Ale*_*net 3

我认为如果不向您的程序发送睡眠,这是不可能的。但我认为您不应该担心睡眠,因为这是 UNIX 在另一个线程请求访问 CPU 时所做的事情。

如果你发现你的程序使用了 50% 的 CPU 核心,那么它就是50% 的时间,因为一个 CPU 核心一次只能执行一个或两个线程(取决于你的配置,在 linux 上可以使用lscpu查看)。

如果您正在构建一个始终 100% 消耗内核并且从不让其他进程进入的应用程序,这可能是可能的,但您永远不知道您的内核是否会一次允许某些 CPU 给另一个紧急程序。

因此,我的建议是考虑您的应用程序可能会暂停的事实,因为它可能会发生,而这显然是您需要的。

希望我能帮助你:)再见!