linux – 如何根据可用内核的数量选择最大负载阈值?

我有一个管道在 Linux机器上运行一些计算密集型任务.启动这些的脚本检查当前的负载平均值,如果它高于某个阈值,则等待负载低于它.这是在Ubuntu虚拟机上运行(如果相关的话,在Ubuntu主机上运行),可以为其分配可变数量的核心.我们的开发和生产机器都是在同一物理服务器上运行的VM,我们根据需要手动为每个服务器分配核心.

我注意到即使VM只有20个核心,大约60的负载也不会让机器瘫痪. Linux负载平均工作方式的My understanding是指任何高于CPU数量的东西都表明存在问题,但显然事情并不像所有那样明确.

我正在考虑将阈值设置为$(grep -c processor / proc / cpuinfo)x N,其中N> = 1.是否有任何聪明的方法来确定N应该采取的价值,以便最大限度地提高性能并最大限度地减少滞后?

换句话说,如何在性能开始降低之前知道机器可以支持的最大平均负载量?我天真地期望这是CPU的数量(所以,N = 1),但这似乎并没有成功.由于核心的数量可以变化,因此测试可能的组合既复杂又耗时,并且由于这是各种人使用的机器,因此不切实际.

那么,如何根据可用内核数量确定可接受的最大平均负载阈值?

解决方法

负载在Linux上经常被误解.

在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.

我想这对你的问题来说会更优雅.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


文章浏览阅读1.8k次,点赞63次,收藏54次。Linux下的目录权限!!!粘滞位!!!超详解!!!
文章浏览阅读1.6k次,点赞44次,收藏38次。关于Qt的安装、Windows、Linux、MacBook_mack book 安装qt
本文介绍了使用shell脚本编写一个 Hello
文章浏览阅读1.5k次,点赞37次,收藏43次。【Linux】初识Linux——了解操作系统的发展历史以及初次体验Linux编程环境
文章浏览阅读3k次,点赞34次,收藏156次。Linux超详细笔记,个人学习时很认真的记录的,觉得好的麻烦点个赞。
文章浏览阅读6.8k次,点赞109次,收藏114次。【Linux】 OpenSSH_9.3p1 升级到 OpenSSH_9.5p1(亲测无问题,建议收藏)_openssh_9.5p1
文章浏览阅读3.5k次,点赞93次,收藏78次。初识Linux中的线程,理解线程的各种概念,理解进程地址空间中的页表转换,介绍pthread线程库并理解线程库!
文章浏览阅读863次。出现此问题为Linux文件权限问题,解决方案为回到引擎目录执行命令。输入用户密码后运行./UnrealEditor。_increasing per-process limit of core file size to infinity.
文章浏览阅读2.9k次。使用文本编辑器:打开CSV文件,并使用文本编辑器(如Notepad++、Sublime Text、Visual Studio Code等)来查看文件的字符编码格式。通常在编辑器的底部状态栏或设置中可以找到当前编码的显示。请注意,上述方法并非绝对准确,特别是当文件没有明确的编码标识时。因此,如果你发现CSV文件在不同的工具或方法中显示不同的编码格式,可能需要进行进一步的分析和判断,或者尝试使用不同的编码转换方法。该命令将输出文件的MIME类型和编码信息。使用命令行工具:在命令行中,你可以使用。_shell读取csv文件逐行处理
本文介绍了如何在Linux系统中升级gcc版本,以便更好地支持C++11及以上版本的新特性。通过升级gcc,可以提升编译器的功能和性能,获得更好的开发体验。详细的步骤和方法请参考原文链接。
文章浏览阅读4.4k次,点赞6次,收藏19次。Mosquitto是一个开源的MQTT消息代理服务器。MQTT是一个轻量级的、基于发布/订阅模式的消息传输协议。 mosquitto的安装使用比较简单,可以方便的来进行一些测试。_linux mosquitto
文章浏览阅读7.2k次,点赞2次,收藏12次。Linux中,用于根目录下有一个.ssh目录,保存了ssh相关的key和一些记录文件。_~/.ssh/
文章浏览阅读4.5k次,点赞5次,收藏18次。首先需要安装 snmp ,使用下面的命令进行安装安装完毕之后,使用下面的命令查看是否安装成功当命令行显示如图即为安装成功。_snmp工具
文章浏览阅读3.5k次,点赞7次,收藏24次。本地部署和使用llama.cpp进行量化Llama2,linux和Windows平台方案,支持CPU和GPU多版本。_llama cpp gpu
文章浏览阅读1.4k次,点赞46次,收藏44次。在vim中,最为常见的有三种模式,分别是:命令模式(command mode)、插 入模式(Insert mode)和底行模式(last line mode)文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作。在命令模式下,shift+: 即可进入该模 式。在进入vim后,使用 i 进入插入模式,插入模式就是vim的编辑模式,可以在vim中进行内容的编辑和修改。vim的核心模式,使用vim进入文件编辑时的最初模式,在该模式中只能移动光标和使用命令对文件内容进行编辑。
Linux常用命令大全,包括目录操作命令和文件操作命令,以及查看登录用户命令和文件内容查看命令等。
文章浏览阅读1.7k次,点赞57次,收藏50次。Yearning 简单, 高效的MYSQL 审计平台 一款MYSQL SQL语句/查询审计工具,为DBA与开发人员使用.本地部署,注重隐私,简单高效的MYSQL审计平台。下面介绍Linux 简单部署Yearning 并结合cpolar 内网穿透工具实现远程访问,破除访问限制,提高工作效率!!
文章浏览阅读1.9w次,点赞7次,收藏18次。Microsoft Edge是一款现代化的浏览器,它拥有众多功能和强大的性能,为用户带来更加流畅的浏览体验。Edge最近推出了分屏功能,支持一个窗口同时显示两个选项卡,这可以大大提高生产力和多任务处理能力。欢迎大家使用分屏及其他新功能后分享自己的使用心得与建议。首先,使用Microsoft Edge的分屏功能确实能够提高生产力,尤其是在需要同时浏览两个不同网页的情况下。分屏功能使得在一个窗口中同时显示两个选项卡,用户可以在两个网页之间快速切换,而无需打开新的窗口或使用多个浏览器窗口。_edge linux
文章浏览阅读1.8k次,点赞83次,收藏71次。C语言实现倒计时和进度条并进行演示。_linux不换行输出倒计时
文章浏览阅读1.5k次,点赞28次,收藏25次。基于嘉立创泰山派开发板,本机使用VMware+Unbuntu,编译泰山派的Linux SDK。详细教程,0基础小白可操作!内涵大量基础操作和linux基本知识。_立创泰山派sdk编译