我有一个在 Linux 机器上运行一些计算密集型任务的管道。启动这些的脚本会检查当前的平均负载,如果它高于某个阈值,则等待直到负载低于该阈值。这是在 Ubuntu 虚拟机上(如果相关,则在 Ubuntu 主机上运行),它可以分配可变数量的内核。我们的开发和生产机器都是运行在同一物理服务器上的虚拟机,我们根据需要手动为每个虚拟机分配内核。
我注意到,即使虚拟机只有 20 个内核,大约 60 个内核的负载也不会使机器瘫痪。我对Linux 平均负载的工作原理的理解是,任何超过 CPU 数量的东西都表明存在问题,但显然事情并没有那么清楚。
我正在考虑将阈值设置为$(grep -c processor /proc/cpuinfo) x N
where N>=1
。是否有任何聪明的方法来确定N
应该采取的价值以最大化性能和最小化延迟?
换句话说,在性能开始下降之前,我如何知道机器可以支持的最大平均负载?我天真地期望这是 CPU 的数量(所以,N=1
),但这似乎并不成立。由于内核的数量可能会有所不同,因此测试可能的组合既复杂又耗时,而且由于这是由不同人使用的机器,因此不切实际。
那么,如何根据可用内核数确定可接受的最大平均负载阈值?