我们知道判断一个系统的负载可以使用top,uptime等命令去查看,它分别记录了一分钟、五分钟、以及十五分钟的系统平均负载……
我们知道判断一个系统的负载可以使用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
Popularity: 11% [?]
相关推荐
### 详解Linux中Load_average负载 在Linux系统中,了解`Load average`(负载平均)的概念对于系统管理和性能监控至关重要。本文将详细解释Linux系统中的负载平均值,并探讨其背后的意义以及如何根据这些值来判断...
下面将详细解析`top`命令在Ubuntu中的应用及其各个参数的意义。 ### 一、`top`命令的基本结构 当你在Ubuntu终端中输入`top`并回车后,会看到如下的界面: ``` top - 01:06:48 up 1:22, 1 user, load average: ...
### Linux 下 `top` 命令的使用详解 `top` 命令是 Linux 系统中非常重要的实时监控工具之一,主要用于查看和监控系统资源使用情况,特别是 CPU 和内存的使用情况。虽然大多数程序员都熟悉 `top` 命令的基本使用,但...
Linux 进程管理四个命令详解 Linux 进程管理是 Linux 操作系统中一个非常重要的组件,它负责管理和控制系统中的进程。Linux 提供了多种命令来管理和监控进程,这些命令可以帮助系统管理员和开发者更好地了解和控制...
你可以使用`uptime`、`top`或`vmstat`等命令来查看Load Average。当Load Average持续高于系统的核心数时,可能表示系统过载。通过分析进程状态和资源使用情况,可以找出导致高负载的原因,例如内存不足、磁盘I/O瓶颈...
### Linux下top命令使用方法详解 #### 一、top 命令简介 `top` 命令是Linux系统中一个非常强大的实时监控工具,它可以帮助用户了解系统的整体运行状态,包括CPU使用率、内存使用情况以及各个进程的状态等。通过`...
### Linux中的Top命令详解 #### 一、Top命令概述 `top`命令是Linux系统中一个非常实用且强大的工具,用于实时显示系统中各个进程的资源占用状况。它提供了CPU使用率、内存使用情况以及系统运行时间等信息,是系统...
### Top 命令详解 #### 一、Top 命令概述 `top` 命令是 Linux 系统中一个非常重要的系统监控工具,它可以实时地显示系统中各个进程的资源占用状况,包括 CPU 使用率、内存使用情况等。通过 `top` 命令,用户可以...
top 命令主要用于查看...load average: 0.01, 0.04, 0.00 表示系统的平均负载,最后的三个数字分别表示最后一分钟的系统平均负载,最后五分钟的系统平均负载,最后十五分钟的系统平均负载。 小写字母 i 可以控制是否
例如,"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。负载平均值是衡量系统繁忙程度的关键指标,...
因此,选择合适的监测工具和合理地配置它们的监测参数,对于维护Linux系统的健康状况和提升用户体验至关重要。同时,除了上述提到的命令行工具之外,还存在一些图形化的性能监测工具,如Nagios、Cacti和Ganglia等,...
Linux Top 命令详解 Top 命令是 Linux 操作系统下的一个常用性能分析工具,可以实时显示系统中各个进程的资源占用状况,类似于 Windows 操作系统下的任务管理器。下面是 Top 命令的参数详解和使用思路。 Top 命令...
### Linux常用系统维护命令知识点详解 #### 一、获取系统基本信息 **1. 查看Linux内核版本** - **命令**: `uname -a` - **用途**: 该命令可以显示当前系统的内核版本信息,包括操作系统名称、内核版本号等。 - *...
### Linux系统性能测试关键知识点详解 #### 一、性能监控工具与目录 在Linux系统中进行性能测试,有几个核心的工具和目录是必不可少的。这些工具可以帮助我们深入了解系统的运行状态,包括CPU使用率、内存使用情况...
### Linux查看系统配置命令知识点详解 #### 一、概述 在Linux系统中,了解和管理系统的硬件和软件配置至关重要。本文将详细介绍一系列常用的Linux命令,这些命令可以帮助您快速有效地查看和管理您的Linux系统的配置...
### Linux查看系统配置常用命令详解 #### 一、系统基本信息 **1.1 查看内核/操作系统/CPU信息** - **命令**: `uname –a` - **功能**: 显示系统内核信息、操作系统版本以及CPU类型等。 - **示例输出**: ``` ...
### Linux运维手册知识点详解 #### 一、概述 本文档为一名资深Linux运维工程师多年实践经验的总结,旨在为同行提供一套全面且实用的Linux运维指南。文档覆盖了Linux环境下日常维护工作的各个方面,包括但不限于...
### Linux服务器系统管理手册知识点详解 #### 一、概述 - **手册目的**: 本手册旨在为运维人员提供一套标准化的Linux服务器维护流程与检查清单,确保系统的稳定性和安全性。 - **适用范围**: 适用于所有基于Linux...