如何限制单个进程向其他 CPU 的溢出量

如何限制单个进程向其他 CPU 的溢出量

请原谅我对问题的完全无知 - 我可能在这里缺乏正确的术语......

我试图了解单个进程(R 会话)如何溢出到我们服务器上的所有 CPU(n=72)。当给定对象或操作所需的内存超过给定阈值时,似乎就会发生这种情况。

此行为可以在以下屏幕截图中看到htop,显示所有 CPU 均已被利用:

在此输入图像描述

在此时间点上,“marc”和“ismael”都在 R 上运行单个会话,从以下输出可以看出top

在此输入图像描述

Ismael 的进程超出了导致多线程的某些限制,其中使用了 > 5000% 的 CPU。虽然这种行为可能是大型计算所需要的,但我感觉它使整个服务器上的很多事情变慢。从我身上发生过这种情况的情况来看,我什至不清楚这种多线程正在提高计算速度。

有人可以向我解释一下发生了什么,以及我们是否可以调整任何设置以提高服务器上作业分配的性能?

提前谢谢了。

答案1

我不知道这里发生了什么,或者有什么问题,或者如何提供帮助,但你们都应该开始使用nice来启动批处理进程。

nice程序允许好用户声明工作低优先级,因此,它会优先考虑其他人的 shell(除非由于某种原因他们“更好”),以便让其他人的生活更轻松。

运行htop并观看:

运行这个:

stress --cpu 4

打开另一个选项卡,运行以下命令:

nice -n 19 stress --cpu 4

您会发现后者仅在其他批次剩余可用 CPU 时间时才有效。

是的我想说你希望伊斯梅尔 (Ismael) 能够以“高度友善”的方式推出大量产品。

如果他不这样做,您可以htop使用超级用户权限运行(如果可以的话),甚至可以从程序中使他的批处理变得更好htop

相关内容