我注意到即使VM只有20个核心,大约60的负载也不会让机器瘫痪. Linux负载平均工作方式的My understanding是指任何高于cpu数量的东西都表明存在问题,但显然事情并不像所有那样明确.
我正在考虑将阈值设置为$(grep -c processor / proc / cpuinfo)x N,其中N> = 1.是否有任何聪明的方法来确定N应该采取的价值,以便最大限度地提高性能并最大限度地减少滞后?
换句话说,如何在性能开始降低之前知道机器可以支持的最大平均负载量?我天真地期望这是cpu的数量(所以,N = 1),但这似乎并没有成功.由于核心的数量可以变化,因此测试可能的组合既复杂又耗时,并且由于这是各种人使用的机器,因此不切实际.
解决方法
在Linux上,它是运行或不间断睡眠状态中所有任务的度量.
请注意,这是任务,而不是进程.线程包含在此值中.
内核每五秒计算一次加载,并且是一个加权平均值.这是微小负载是平均5/60,五分钟5/300和十五分之五.
一般来说,作为一个纯数字的负载在没有参考点的情况下几乎没有价值,我认为这个值经常被误传.
误解1:作为比率加载
In other words,how can I know what maximum load average a machine can support before performance starts to degrade?
这是人们在Linux中加载最常见的谎言.它可用于测量某些固定比率的cpu性能.这不是负载给你的东西.
详细说明 – 人们很容易理解cpu利用率.随着时间的推移,这是实用你完成工作,然后通过工作分工.
在这方面可能的工作是固定的已知值,通常表示为100的百分比 – 即固定比率.
然而,负载没有约束.没有固定的最大值,这就是为什么你难以理解要测量什么.
澄清采样的负载确实具有不固定的最大值,这是采样时系统中当前存在的任务总数(这与正在进行的cpu工作没有实际关系).
如果计算加权,则计算出的负载没有固定的最大值,因为它被投入加权平均值并且没有给出任务数量的记录.
因为我喜欢食物,你可以给出的类比是,利用率是你吃盘子的速度和平均负荷 – 平均而言 – 你剩下多少盘子.
因此,cpu效用和负载之间的差异是微妙但重要的. cpu实用程序是衡量工作的标准,负载是衡量需要完成的工作的标准.
误解2:负载是即时测量
第二个谬论是Load是一个粒度测量.您可以读取数字并了解系统状态.
负载不是粒度的,而是表示系统的一般长期条件.它不仅每五秒采样一次(因此错过了在5秒窗口内发生的任务),而是分别以1,5和15分钟的平均值进行测量.
您无法将其用作容量的即时衡量标准,而是在较长时间内对系统负担的一般意义.
负载可以是100,然后仅在30秒后为10.它是你必须继续观看的价值.
Load可以告诉你什么?
它可以让您了解系统的工作趋势.它被给予的能力超过它能应付的程度还是更低?
>如果负载小于您拥有的cpu数(通常),则表示您的cpu容量大于工作量.
>如果负载大于或等于cpu的数量并且趋势向上,则表明系统的工作量超出其处理能力.
>如果负载大于或等于cpu的数量并且向下趋势,则表明系统正在完成工作的速度比您给它要做的事情要快.
由于不间断的睡眠状态,这确实使负载值混淆为纯粹的工作安排得分 – 但是可以指示磁盘上有多少需求(它仍需要在技术上完成工作).
负载还提供系统异常的线索.如果你看到负荷在50,那表明有些不对劲.
另外加载会导致人们无缘无故地关注.
>众所周知,磁盘活动可以增加负载.
>如果许多进程绑定到正在等待的一个cpu,则可以人为地加载负载.
>具有极低优先级(niceness)的任务通常需要等待很长时间才能为该特定进程将负载膨胀1.
综上所述
我发现负载是一个非常粗糙的值,恰恰是没有绝对的.您在一个系统上进行的测量通常对另一个系统没有意义.
它可能是我在顶部看到的第一件事,纯粹是为了检查明显的异常现象.基本上我使用它几乎像一个温度计 – 就像一个系统的一般条件.
我发现它的采样周期太长,以至于我扔在我的系统上的大多数工作负载(通常以秒为单位运行,而不是几分钟).我认为执行长时间运行密集型任务的系统是有意义的,但我并没有真正做到这一点.
我用它的另一件事是长期容量管理.在很长一段时间(几个月)内绘制图表是一件好事,因为您可以使用它来了解与几个月前相比您处理的工作量.
最后,回答您关于在您的方案中应该做什么的问题.
老实说,我提供的最佳建议是考虑使用load作为何时运行 – 使用nice来执行你的进程,让其他进程优先于它.出于某些原因,这很好.
>当其他进程忙时,您只需为此进程提供少量cpu时间.
>如果cpu上没有任何内容或cpu处于空闲状态,则您的任务将100%花费在其上.
>进程组中的所有进程都继承了相同的优点.
好于0(默认值),每个进程的权重为1024.权重越低,cpu提供给进程的时间就越少.这是一个表格.
Nice Weight 0 1024 1 820 2 655 3 526 4 423 5 335 6 272 7 215 8 172 9 137 10 110 11 87 12 70 13 56 14 45 15 36 16 29 17 23 18 18 19 15
因此,要比较,在您有2个进程等待运行的情况下 – 如果您重新设置进程10,它将获得优先级0进程所占cpu时间的大约1/10.如果你将它重新计算19,它将获得优先级0进程所占cpu时间的1/100.
应该注意的是,至少在管道持续时间内,您可能会看到负载为1.
我想这对你的问题来说会更优雅.