进程运行良好 +20 仍然导致系统运行缓慢

进程运行良好 +20 仍然导致系统运行缓慢

如果我希望某个进程在所有核心上在后台运行,那么系统会变得非常缓慢,即使在 +20 的 Nice 模式下运行也是如此。内存或 io 耗尽不是问题所在。有没有简单的方法可以将 CPU 优先级降低到这个水平以下,或者我必须求助于启动后台进程,使工作线程数少于核心数,或者在进程内部进行某种其他类型的 CPU 管理。

答案1

你可能想看看idprio(1)和/或cpuset(1)

例如:

idprio 31 commandhere

将限制commandhere为空闲优先级。并且

cpuset -l 0-3 commandhere

会将其限制为仅使用 CPU 核心 0-3。要组合它们:

cpuset -l 0 idprio 31 commandhere

(顺序可以改为idprio 31 cpuset -l 0-3 commandhere,我认为这并不重要)。当然,哪个命令或命令参数组合(优先级或 CPU 列表)取决于您的工作量,YMMV 等。

答案2

第一个解决方案

使用 limit 命令。如手册页中所述:

limit、ulimit、unlimit - 设置或获取当前 shell 及其后代可用的系统资源限制

这里有一个关联到手册页。

第二种解决方案

使用监狱,它可以用来将进程与系统的其余部分隔离,也可以限制 CPU 和内存的使用。

正如解释的那样这里

FreeBSD 为管理员提供了几种方法来限制个人可以使用的系统资源量。磁盘配额限制了用户可用的磁盘空间量。第 17.11 节“磁盘配额”中讨论了配额。

可以使用平面文件或命令配置资源限制数据库来设置对其他资源(如 CPU 和内存)的限制。传统方法通过编辑 /etc/login.conf 来定义登录类。虽然这种方法仍然受支持,但任何更改都需要多步骤过程,包括编辑此文件、重建资源数据库、对 /etc/master.passwd 进行必要的更改以及重建密码数据库。这可能会很耗时,具体取决于要配置的用户数量。

相关内容