更有说服力的文章:
http://dongyajun.iteye.com/blog/645553
我们知道判断一个系统的负载可以使用top,uptime等命令去查看,它分别记录了一分钟、五分钟、以及十五分钟的系统平均负载。
你可能对于 Linux 的负载均值(load averages)已有了充分的了解。负载均值在 uptime 或者 top 命令中可以看到,它们可能会显示成这个样子:
load average: 0.09, 0.05, 0.01
很多人会这样理解负载均值:三个数分别代表不同时间段的系统平均负载(一分钟、五 分钟、以及十五分钟),它们的数字当然是越小越好。数字越高,说明服务器的负载越 大,这也可能是服务器出现某种问题的信号。
而事实不完全如此,是什么因素构成了负载均值的大小,以及如何区分它们目前的状况是 “好”还是“糟糕”?什么时候应该注意哪些不正常的数值?
回答这些问题之前,首先需要了解下这些数值背后的些知识。我们先用最简单的例子说明, 一台只配备一块单核处理器的服务器。
行车过桥
一只单核的处理器可以形象得比喻成一条单车道。设想下,你现在需要收取这条道路的过桥 费 — 忙于处理那些将要过桥的车辆。你首先当然需要了解些信息,例如车辆的载重、以及 还有多少车辆正在等待过桥。如果前面没有车辆在等待,那么你可以告诉后面的司机通过。 如果车辆众多,那么需要告知他们可能需要稍等一会。
因此,需要些特定的代号表示目前的车流情况,例如:
0.00 表示目前桥面上没有任何的车流。 实际上这种情况与 0.00 和 1.00 之间是相同的,总而言之很通畅,过往的车辆可以丝毫不用等待的通过。
1.00 表示刚好是在这座桥的承受范围内。 这种情况不算糟糕,只是车流会有些堵,不过这种情况可能会造成交通越来越慢。
超过 1.00,那么说明这座桥已经超出负荷,交通严重的拥堵。 那么情况有多糟糕? 例如 2.00 的情况说明车流已经超出了桥所能承受的一倍,那么将有多余过桥一倍的车辆正在焦急的等待。3.00 的话情况就更不妙了,说明这座桥基本上已经快承受不了,还有超出桥负载两倍多的车辆正在等待。
上面的情况和处理器的负载情况非常相似。一辆汽车的过桥时间就好比是处理器处理某线程 的实际时间。Unix 系统定义的进程运行时长为所有处理器内核的处理时间加上线程 在队列中等待的时间。
和收过桥费的管理员一样,你当然希望你的汽车(操作)不会被焦急的等待。所以,理想状态 下,都希望负载平均值小于 1.00 。当然不排除部分峰值会超过 1.00,但长此以往保持这 个状态,就说明会有问题,这时候你应该会很焦急。
“所以你说的理想负荷为 1.00 ?”
嗯,这种情况其实并不完全正确。负荷 1.00 说明系统已经没有剩余的资源了。在实际情况中 ,有经验的系统管理员都会将这条线划在 0.70:
“需要进行调查法则”: 如果长期你的系统负载在 0.70 上下,那么你需要在事情变得更糟糕之前,花些时间了解其原因。
“现在就要修复法则”:1.00 。 如果你的服务器系统负载长期徘徊于 1.00,那么就应该马上解决这个问题。否则,你将半夜接到你上司的电话,这可不是件令人愉快的事情。
“凌晨三点半锻炼身体法则”:5.00。 如果你的服务器负载超过了 5.00 这个数字,那么你将失去你的睡眠,还得在会议中说明这情况发生的原因,总之千万不要让它发生。
那么多个处理器呢?我的均值是 3.00,但是系统运行正常!
哇喔,你有四个处理器的主机?那么它的负载均值在 3.00 是很正常的。
在多处理器系统中,负载均值是基于内核的数量决定的。以 100% 负载计算,1.00 表示单个处理器,而 2.00 则说明有两个双处理器,那么 4.00 就说明主机具有四个处理器。
回到我们上面有关车辆过桥的比喻。1.00 我说过是“一条单车道的道路”。那么在单车道 1.00 情况中,说明这桥梁已经被车塞满了。而在双处理器系统中,这意味着多出了一倍的 负载,也就是说还有 50% 的剩余系统资源 — 因为还有另外条车道可以通行。
所以,单处理器已经在负载的情况下,双处理器的负载满额的情况是 2.00,它还有一倍的资源可以利用。
多核与多处理器
先脱离下主题,我们来讨论下多核心处理器与多处理器的区别。从性能的角度上理解,一台主 机拥有多核心的处理器与另台拥有同样数目的处理性能基本上可以认为是相差无几。当然实际 情况会复杂得多,不同数量的缓存、处理器的频率等因素都可能造成性能的差异。
但即便这些因素造成的实际性能稍有不同,其实系统还是以处理器的核心数量计算负载均值 。这使我们有了两个新的法则:
“有多少核心即为有多少负荷”法则: 在多核处理中,你的系统均值不应该高于处理器核心的总数量。
“核心的核心”法则: 核心分布在分别几个单个物理处理中并不重要,其实两颗四核的处理器 等于 四个双核处理器 等于 八个单处理器。所以,它应该有八个处理器内核。
审视我们自己
让我们再来看看 uptime 的输出
~ $ uptime
23:05 up 14 days, 6:08, 7 users, load averages: 0.65 0.42 0.36
这是个双核处理器,从结果也说明有很多的空闲资源。实际情况是即便它的峰值会到 1.7,我也从来没有考虑过它的负载问题。
那么,怎么会有三个数字的确让人困扰。我们知道,0.65、0.42、0.36 分别说明上一分钟、最后五分钟以及最后十五分钟的系统负载均值。那么这又带来了一个问题:
我们以哪个数字为准?一分钟?五分钟?还是十五分钟?
其实对于这些数字我们已经谈论了很多,我认为你应该着眼于五分钟或者十五分钟的平均数 值。坦白讲,如果前一分钟的负载情况是 1.00,那么仍可以说明认定服务器情况还是正常的。 但是如果十五分钟的数值仍然保持在 1.00,那么就值得注意了
(根据我的经验,这时候你应该增加处理器的数量了)。
那么我如何得知我的系统装备了多少核心的处理器?
在 Linux 下,可以使用
cat /proc/cpuinfo
获取你系统上的每个处理器的信息。如果你只想得到数字,那么就使用下面的命令:
grep 'model name' /proc/cpuinfo | wc -l
分享到:
相关推荐
### 详解Linux中Load_average负载 在Linux系统中,了解`Load average`(负载平均)的概念对于系统管理和性能监控至关重要。本文将详细解释Linux系统中的负载平均值,并探讨其背后的意义以及如何根据这些值来判断...
`ldavg3.pdf`和`ldavg-hz.pdf`这两份文档可能更详细地介绍了Load Average与系统时钟频率(HZ)的关系。在某些UNIX变体中,HZ是系统每秒执行的时钟中断次数,这直接影响了Load Average的精度。在现代系统中,HZ通常被...
在输入查看可用的CPU核数命令,获得12时,意味着本系统可用CPU核数12核 nproc 输入top指令,查看 load average 参数,我的习惯用法是如下所示,代表所显示的top界面...平均负载(load average)-是在给定的1、5和1
在Unix和Linux操作系统中,Load Average是一个非常关键的性能指标,它用来衡量系统在特定时间段内的平均负载。本文将深入探讨Load Average的工作原理,并解析其计算方式,帮助你更好地理解和利用这一信息。 **1. ...
这里的“load average”是指系统负载平均值,它反映了在指定时间段内,系统处于就绪队列等待CPU执行的平均进程数。 负载平均值由三个数字组成,分别代表过去1分钟、5分钟和15分钟的平均负载。这些数字越低,表明...
负载是 Linux 操作系统中一个非常重要的概念,通过使用 uptime 或者 top 命令,都可以看到一个负载的输出,形如 load average: 0.00, 0.03, 0.00。但是,man 文档里只是一笔带过,没有具体的给出负载的定义。因此,...
Linux 命令查看系统平均负载的方法 通过 Linux 命令查看系统平均负载的方法是服务器管理员必备的技能之一。本文将介绍通过 Linux 命令查看系统平均负载的方法,从而帮助管理员更好地监控和管理服务器的性能。 一、...
MySQL导致的CPU高负载问题 今天下午发现了一个MySQL导致的向上服务器...top - 17:12:44 up 104 days, 20 min, 2 users, load average: 1.06, 1.02, 1.00 Tasks: 218 total, 1 running, 217 sleeping, 0 stopped, 0 zo
KDE Load Average Applet 是一款专为KDE桌面环境设计的小部件,它提供了实时的系统平均负载图表,帮助用户了解计算机系统的运行状况。这款工具是开源的,意味着它的源代码对公众开放,用户可以自由查看、修改和分发...
Load average 的值分为三个数字,分别表示 1分钟、5分钟、15分钟的系统平均负载。 五、Dstat 命令 Dstat 是一个多功能系统资源统计工具,它可以获取网络 I/O、磁盘、CPU 等信息。Dstat 的用法非常灵活,可以根据...
CPU Load 是指 CPU 可以并行处理的任务数,那么就是“CPU 个数 * 核数”,如果 CPU Load 等于 CPU 个数 * 核数,那么就是说 CPU 正好满负载。 十、 analysis 通过 LoadRunner 监控到的 Linux 服务器 CPU 的主要...
你可能对于 Linux 的负载均值(load averages)已有了充分的了解。负载均值在 uptime 或者 top 命令中可以看到,它们可能会显示成这个样子: load average: 0.09, 0.05, 0.01 很多人会这样理解负载均值:...
Load Average 是 Linux 系统中的一种性能指标,它表示系统在特定时间间隔内的平均负载。 * Load Average 的三个数值分别记录了一分钟、五分钟和十五分钟的系统平均负载。 * 高于多少负载有问题?有两个法则可以...
Uptime是一个简单而又实用的工具,它可以快速显示系统已经运行了多长时间,当前登录的用户数,以及系统的平均负载(load average)。系统的平均负载是指在特定时间间隔内,处于可运行状态和不可中断状态的平均进程数...
5. Load Average 的概念:Load Average 是一个衡量系统负载的指标,即系统中所有进程的平均负载。Load Average 的值越高,表示系统的负载越高。 6. 系统信息的获取:通过读取/proc目录中的文件,可以获取系统的各种...
例如,"10:19:04 up 257 days, 18:56, 12 users, load average: 2.10, 2.10, 2.09"表示系统已运行257天18小时56分钟,有12个用户连接,平均负载分别为2.10、2.10和2.09。负载平均值是衡量系统繁忙程度的关键指标,...
对于CPU使用率低但负载高的情况,问题可能出在“负载平均”(load average)上。负载平均值反映了在一段时间内系统中平均有多少任务在等待CPU处理。如果系统空闲,但负载平均值很高,这可能意味着存在僵死进程(D...
* -l <load>、--load-average[=<load>]、--max-load[=<load>]:指定 Make 运行命令的负载。 * -o 、--old-file=、--assume-old=<file>:不重新生成的指定的 ,即使这个目标的依赖文件新于他。 * -p、--print-data-...