请选择 进入手机版 | 继续访问电脑版

[LINUX] 浅谈为什么磁盘慢会导致Linux负载飙升

[复制链接]
查看70 | 回复21 | 2021-9-5 07:18:00 | 显示全部楼层 |阅读模式

 一、CPU使用 率和负载率的区别

浅谈为什么磁盘慢会导致Linux负载飙升

这里要区别CPU负载和CPU使用 率,它们是不同的两个概念,但它们的信息可以在同一个top下令 中举行 表现 。CPU使用 率表现 的是程序在运行期间及时 占用的CPU百分比,这是对一个时间段内CPU使用 状态 的统计,通过这个指标可以看出在某一个时间段内CPU被占用的环境 , 假如 被占用时间很高,那么就必要 思量 CPU是否已经处于超负荷运作。而CPU负载表现 的是在一段时间内CPU正在处理以及等待CPU处理的历程 数之和的统计信息,也就是CPU使用 队列的长度的统计信息。

CPU使用 率高并不意味着负载就肯定 大,大概 这个任务 是一个CPU麋集 型的。一样CPU低使用 率的环境 下是否会有高Load Average的环境 产生呢?明白 占据 时间和使用 时间就可以知道,当CPU分配时间片以后,是否使用 完全取决于使用 者,因此完全大概 出现低使用 率高Load Average的环境 。别的 IO装备 也大概 导致CPU负载高。

由此来看,仅仅从CPU的使用 率来判定 CPU是否处于一种超负荷的工作状态还是不够的,必须联合 Load Average来全局的看CPU的使用 环境 。网上有个例子来阐明 两者的区别如下:某公用电话亭,有一个人在打电话,四个人在等待,每人限定使用 电话一分钟,如有 人一分钟之内没有打完电话,只能挂掉电话去列队 ,等待下一轮。电话在这里就相称 于CPU,而正在或等待打电话的人就相称 于任务 数。在电话亭使用 过程中,肯定会有人打完电话走掉,有人没有打完电话而选择重新列队 ,更会有新增的人在这儿列队 ,这个人数的变化就相称 于任务 数的增减。为了统计均匀 负载环境 ,我们5秒钟统计一次人数,并在第1、5、15分钟的时间 对统计环境 取均匀 值,从而形成第1、5、15分钟的均匀 负载。有的人拿起电话就打,不停 打完1分钟,而有的人大概 前三十秒在找电话号码,或者在夷由 要不要打,后三十秒才真正在打电话。假如 把电话看作CPU,人数看作任务 ,我们就说前一个人(任务 )的CPU使用 率高,后一个人(任务 )的CPU使用 率低。当然, CPU并不会在前三十秒工作,后三十秒歇着,CPU是不停 在工作。只是说,有的程序涉及到大量的计算,以是 CPU使用 率就高,而有的程序扳连 到计算的部分很少,CPU使用 率天然 就低。但无论CPU的使用 率是高是低,跟后面有多少任务 在列队 没有必然关系。

CPU数目 和CPU核心数(即内核数)都会影响到CPU负载,由于 任务 终极 是要分配到CPU核心行止 理的。两块CPU要比一块CPU好,双核要比单核好。因此,我们必要 记住,除去CPU性能上的差异,CPU负载是基于内核数来计算的,即“有多少内核,即有多少负载”,如单核最好不要超过100%,也就是负载为1.00,云云 类推。

Linux里有一个/proc目次 ,存放的是当前运行体系 的假造 映射,此中 有一个文件为cpuinfo,这个文件里存放着CPU的信息。/proc/cpuinfo文件按逻辑CPU而非真实CPU分段落表现 信息,每个逻辑CPU的信息占用一个段落,第一个逻辑CPU标识从0开始。

  1. $ cat /proc/cpuinfo
  2. processor : 0
  3. vendor_id : GenuineIntel
  4. cpu family : 6
  5. model : 63
  6. model name : Intel(R) Xeon(R) CPU E5-2630 v3 @ 2.40GHz
  7. stepping : 2
  8. microcode : 0x36
  9. cpu MHz : 2399.998
  10. cache size : 20480 KB
  11. physical id : 0
  12. siblings : 2
  13. core id : 0
  14. cpu cores : 2
  15. apicid : 0
  16. initial apicid : 0
  17. fpu : yes
  18. fpu_exception : yes
  19. cpuid level : 15
  20. wp : yes
  21. flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr ......
  22. bogomips : 4799.99
  23. clflush size : 64
  24. cache_alignment : 64
  25. address sizes : 42 bits physical, 48 bits virtual
  26. power management:
复制代码

要明白 该文件中的CPU信息,有几个相干 的概念要知道,如:processor表示逻辑CPU的标识、model name表示真实CPU的型号信息、physical id表示真实CPU和标识、cpu cores表示真实CPU的内核数等等。

逻辑CPU的形貌 :现在 的服务器一样平常 都使用 了“超线程”(Hyper-Threading,简称HT)技术来进步 CPU的性能。超线程技术是在一颗CPU同时实验 多个程序而共同分享一颗CPU内的资源,理论上要像两颗CPU一样在同一时间实验 两个线程。固然 采用超线程技术能同时实验 两个线程,但它并不象两个真正的CPU那样,每各CPU都具有独立的资源。当两个线程都同时必要 某一个资源时,此中 一个要临时 制止 ,并让出资源,直到这些资源闲置后才能继续。因此超线程的性能并不等于两颗CPU的性能。具有超线程技术的CPU还有一些别的 方面的限定 。

二、CPU负载率的计算方式

Load average的概念源自UNIX体系 ,固然 各家的公式不尽雷同 ,但都是用于衡量正在使用 CPU的举行 数目 和正在等待CPU的历程 数目 ,一句话就是runable processes的数目 。以是 Load average可以作为CPU瓶颈的参考指标,假如 大于CPU的数目 ,阐明 CPU大概 不够用了。

但是,在Linux上有点差异!

Linux上的load average除了包括正在使用 CPU的历程 数目 和正在等待CPU的历程 数目 之外,还包括uninterruptible sleep的历程 数目 。通常等待IO装备 、等待网络的时间 ,历程 会处于uninterruptible sleep状态。Linux计划 者的逻辑是,uninterruptible sleep应该都是很短暂的,很快就会恢复运行,以是 被等同于runnable。然而uninterruptible sleep即使再短暂也是sleep,何况现实 天下 中uninterruptible sleep未必很短暂,大量的、或长时间的uninterruptible sleep通常意味着IO装备 碰到 了瓶颈。众所周知,sleep状态的历程 是不必要 CPU的,即使全部 的CPU都空闲,正在sleep的历程 也是运行不了的,以是 sleep历程 的数目 绝对不得当 用作衡量CPU负载的指标,Linux把uninterruptible sleep历程 算进load average的做法直接颠覆了load average的本来意义。以是 在Linux体系 上,load average这个指标基本失去了作用,由于 你不知道它代表什么意思,当看到load average很高的时间 ,你不知道是runnable历程 太多还是uninterruptible sleep历程 太多,也就无法判定 是CPU不够用还是IO装备 有瓶颈。

从另一个方面来说,也就可以表明 为什么磁盘慢时(大量磁盘使用 时),CPU负载会飙高了。基本上我碰到 CPU负载高的环境 就两种环境 :CPU本身处理太多任务 ,再加上软制止 和上下文切换太频仍 导致负载高;再就是磁盘太慢导致了不可制止 就寝 太多导致CPU负载高。

以上就是本文关于浅谈为什么磁盘慢会导致Linux负载飙升的全部内容,盼望 对大家有所帮助。感爱好 的朋侪 可以继续参阅本站其他相干 专题,如有不足之处,欢迎留言指出。感谢朋侪 们对本站的支持!


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

avatar 尹以为荣 | 2021-9-13 00:21:38 | 显示全部楼层
admin楼主好聪明啊!
回复

使用道具 举报

avatar 123457730 | 2021-9-21 00:55:31 | 显示全部楼层
知识就是力量啊!
回复

使用道具 举报

avatar fdxhcwe148498 | 2021-9-26 06:38:59 | 显示全部楼层
有钱、有房、有车,人人都想!
回复

使用道具 举报

avatar 小鱼680 | 2021-9-27 00:14:25 | 显示全部楼层
十分赞同admin楼主!
回复

使用道具 举报

avatar 哈哈SE7 | 2021-9-30 01:33:47 | 显示全部楼层
admin楼主又闹绯闻了!
回复

使用道具 举报

avatar 123457376 | 2021-10-4 20:48:06 | 显示全部楼层
以后就跟admin楼主混了!
回复

使用道具 举报

avatar 风男人1984 | 2021-10-4 21:29:27 | 显示全部楼层
admin楼主的帖子提神醒脑啊!
回复

使用道具 举报

avatar haiyuezhihun | 2021-10-6 08:27:08 | 显示全部楼层
顶!顶!顶!
回复

使用道具 举报

avatar 极品小处男处v | 2021-10-7 13:55:52 | 显示全部楼层
记得吃药!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则