转自:https://my.oschina.net/laichendong/blog/283799?p=1
在 《linux中找到最耗CPU的那段Java代码》中提到了cpu使用率和load average。但并没有说明这两者具体的含义和他们之间的关系。他们是衡量linux系统压力的两个重要指标。使用# top 命令可以查看到相关的值。 要理解这两个概念,首先要从cpu的时间片说起。 大家都知道,我们现在所使用的Windows、Linux、Mac OS X都是“多任务操作系统”,就是说他们可以“同时”运行多个程序,比如一边看电影还能一边聊QQ。但是,实际上一个CPU内核在同一时刻只能干一件事,那操作系统是如何实现“多任务”的呢?大概的方法是让多个进程轮流使用CPU一小段时间。由于这个“一小段时间”很短(在linux上为5ms-800ms之间),用户(人)感觉不到,就好像是几个程序同时在运行了。上面提到的“一小段时间”就是我们所说的CPU时间片。 CPU使用率,就是程序对CPU时间片的占用情况。打个比方:一段时间内,看电影的进程占用了30msCPU资源,QQ又占用了10ms,接着空闲了60ms。接着电影又占用了30ms,QQ占用了10ms,空闲了60ms。如果一段时间都是这个水平,那这段时间内,CPU的使用率大概在40%左右。 一般来说,CPU使用率在75%以上就是一个比较高的值。 小提示:top命令中,按数字键1可以查看到每个CPU内核的使用率情况。 load average就相对复杂一些了。他表示的是CPU的负载,但他所包含的信息不是 CPU的使用率状况,而是在一段时间内 CPU正在处理以及等待 CPU处理的进程数之和的统计信息,也就是 CPU使用队列的长度的统计信息。举例来说明: 去游乐园坐过山车。假设一辆过山车能装30个人,那当1-30人来玩过山车时,认为过山车的load<1;当正好30个人时,load=1;当超过30人时,load>1。如果有45个人要玩过山车,那就是说能有30人直接上过山车,另外15人则需要等待。此时过山车的load=45/30 = 1.5。也就是说,1.5的负载表示系统当前满负荷运转,且还有相当于50%满负荷的请求在等待。 可能你会说。不对啊,我经常看见我机器的load在3左右,但我的系统运行很正常,一点不是超负荷3倍运行的感觉。嗯,那我猜你拥有一台至少4核以上的机器吧!在多核系统中 。load average是基于内核的数量决定的,可以简单的理解为每个内核load之和。按每个内核100%负载来算,4个内核,load average的值就是4。那到底多高的负载是一个临界点呢?这没有一个绝对值,一个比较被人所接受的说法是: load average 应该 <= cpu核数 * 0.7。但这种计算方式有个问题。当cpu核数越来越大时, 那30%的空闲也越来越大。另一个也比较被接受的说法是: load average 应该 <= cpu核数 - 1到2。这种计算方式也有个弊端。当cpu核数越来越小时, 那前去的1-2占的比例也越来越大。这明显是值得商榷的。 我们发现,不管是使用# top 还是使用# uptime 命令。查看到的load都是3个值。分别表示最近1分钟,5分钟和15分钟的平均load。那我们到底该看哪个,以哪个值为准呢?其实之所以要给出3个值,就是希望我们能结合起来看。或者说希望展示一个动态的图表式的数据,比如最近一分钟显示负载120%。而最近5分钟和15分钟显示负载为50%。可能你不用太过担心。但是如果你发现系统的负载一直维持在120%以上。恐怕你就该加机器了。 还有一种情况, 高Load,但低CPU使用率。这是很多人想不通的一种诡异情况。还是拿上面过山车的例子来说明。假如一共有60个人来玩过山车。过山车一次运行5分钟。两次运行之间,第一批30人下车,第二批30人上车,系上保险装置等等也要花5分钟。这种情况下过山车的使用率就是50%左右。而过山车的load是2。对应到我们的CPU上,当运行的进程(线程)过多是,频繁的上下文切换耗费了大量的CPU时间,导致真正用在运算的CPU时间片比较少(低CPU使用率),却有很多进程在等待运行(高Load)。
相关推荐
Load Average是一个难以衡量的指标,它不仅仅是CPU的使用率,还包括了CPU正在处理和等待处理的进程数之和的统计信息。Load Average可以反应系统的整体负载情况。如果Load Average太高,可能会导致系统性能下降。 ...
要明白负载平均值在UNIX系统中的作用,我们首先需要理解系统的核心功能是如何监控和报告CPU的使用率的。系统中存在一个核心机制来收集和处理这些数据,然后提供给用户查看。例如,当我们运行uptime命令时,系统会...
2.获取系统的CPU使用率:要获取系统的CPU使用率,可以通过读取/proc目录中的文件来实现。例如,读取/proc/stat文件,可以获取系统的CPU使用率信息。 3.获取系统的内存使用情况:要获取系统的内存使用情况,可以通过...
CPU Utilization 是 CPU 的使用率,表示 CPU 在某一时间内的使用百分比。一般来说,CPU Utilization 高于 75% 就认为是比较高的。 二、 CPU 状态 在任意时间内,CPU 有 7 个状态: 1. idle:表示 CPU 闲置并等待...
CPU负载和 CPU使用率 这两个从一定程度上都可以反映一台机器的繁忙程度. cpu使用率反映的是当前cpu的繁忙程度,忽高忽低的原因在于占用cpu处理时间的进程可能处于io等待状态但却还未释放进入wait。 平均负载(load ...
使用unix工具监控cpu、内存等系统资源占用率 3)使用uptime命令监控cpu负载 $ uptime 12:45pm up 119 day(s), 19:01, 1 user, load average: 2.96, 2.98, 3.30 提供快速查看cpu中所有任务(包括正在运行的任务)在1...
本文将深入解析如何使用 `top` 命令在 CentOS 中查看CPU使用率,并提供关于其输出的详细解释。 `top` 命令在终端中执行后,会实时显示系统的各种资源使用情况,包括CPU、内存、进程等。首先,屏幕顶部的系统信息栏...
即使CPU使用率低,如果有很多进程在等待执行,Load Average仍可能很高。 - **考虑I/O等待**:除了CPU执行外,进程在等待I/O操作(如磁盘读写)时也会被计算在内。 - **多核CPU的影响**:在多处理器系统中,更高的...
- `%usr`:用户模式下的CPU使用率。 - `%sys`:系统模式下的CPU使用率。 - `%wio`:CPU空闲且有进程等待I/O的时间占比。 通过对这些数据的持续监控和分析,可以识别出哪些进程是CPU资源的主要消耗者。例如,进程...
Sigar(System Information Gatherer and Reporter)是一款强大的跨平台系统信息收集库,它提供了一种简单的方法来获取操作系统级别的信息,包括CPU、内存、网络、磁盘和其他资源的状态。本项目将详细介绍如何利用...
`top`和`htop`命令可以实时显示当前CPU使用率最高的进程,`ps`命令可以按CPU使用率排序列出所有进程。 总之,有效地分析Linux系统中的CPU使用情况需要结合多个指标和工具,通过观察和理解这些指标,我们可以发现...
CPU使用率主要关注CPU在执行指令上的时间比例,而平均负载则考虑了所有活跃进程,包括正在执行和等待执行的。CPU密集型任务会直接增加平均负载并提高CPU使用率,而I/O密集型任务虽然可能不会显著提高CPU使用率,但...
CPU 负载(Load Average)和 CPU 利用率(CPU Usage)是两个不同的概念。CPU 负载指的是系统当前正在运行和等待运行的进程数之和,而 CPU 利用率则是当前正在运行的进程实时占用 CPU 的百分比。 Linux 指令应用 ...
综上所述,这个资源包可能包含了一个Android库或示例项目,用于实时监测和显示设备的内存、CPU使用率和网络状态。通过解析并使用提供的数据,开发者可以更好地理解和优化他们的应用程序,提升用户体验。同时,结合...
Linux 以及大多数基于 UNIX 的操作系统都提供了一条命令来显示系统的 平均负荷 (loadaverage) 。 [huangc@V-02-01-00860 ~]$ uptime 11:18:05 up 78 days, 1:17, 11 users, load average: 0.20, 0.13...
w命令是一个实用工具,它可以提供当前登录到系统的所有用户的详细信息,包括他们的登录终端(TTY)、远程地址、登录时间、空闲时间、CPU使用情况以及正在执行的进程。在示例输出中,我们可以看到有两个用户(root)登录...
8. **%CPU**:进程占用的CPU使用率,显示进程对CPU的消耗程度。 9. **%MEM**:进程使用的物理内存占总内存的百分比。 10. **TIME+**:自进程启动以来,它占用CPU的累计时间。 11. **COMMAND**:启动进程的命令或程序...
`psutil`库提供了跨平台的方式来获取系统资源信息,如CPU、内存和磁盘使用率。`requests`库用于发送HTTP请求,例如将监控数据发送到监控平台。 核心程序代码如下: 1. **获取端口信息**: 通过创建一个socket对象...