文档章节

Linux系统的CPU使用率和Load

fdhay
 fdhay
发布于 2016/04/18 19:33
字数 1165
阅读 89
收藏 8

好吧,我承认这个话题是老生常谈,我自己也在2009年刚接触性能测试时就已经开始关注并略知一二;然而,对于CPU使用率和系统负载Load的确切含义以及它们之间的关系,我相信不是每个人都说得清楚的(包括我自己)。也时常被了解性能测试的新手问道CPU使用率和Load方面的基本慨念,所以我决定还是自己写篇文章吧,让自己也梳理得更加清晰一点。

   Linux系统的CPU使用率的概念是比较容易理解的,顾名思义就是CPU的使用状况,也就是一段时间之中,CPU用于执行任务占用的时间与总的时间的比率。

   在top、sar、vmstat、mpstat等命令中可以看到CPU使用率通常包含如下几种统计(摘自 man sar):

   

   %user    Percentage  of  CPU  utilization  that  occurred while executing at the user level (application). Note that this field includes time spent running virtual processors. (未标志nice值的)用户态程序的CPU占用率。

   %nice    Percentage of CPU utilization that occurred while executing at the user level with nice priority. 标志了nice值的用户态程序的CPU占用率。

   %system  Percentage  of  CPU  utilization  that  occurred  while  executing  at the system level (kernel). Note that this field includes time spent servicing hardware and software interrupts. 系统态(内核)程序的CPU占用率。

   %iowait  Percentage of time that the CPU or CPUs were idle during which the system had an outstanding disk I/O request. I/O等待的CPU占用率。

   %steal   Percentage  of  time  spent  in involuntary wait by the virtual CPU or CPUs while the hypervisor was servicing another virtual processor. 这个一般是在虚拟机中才能看到数值,比如:我的VPS供应商CPU overcommitment很严重,故我偶尔能看到%steal值有点高。

   %idle    Percentage of time that the CPU or CPUs were idle and the system did not have an outstanding disk I/O request. %idle越高,说明CPU越空闲。

   

   查看CPU使用率,推荐如下Linux命令:

[root@jay-linux ~]# top
[root@jay-linux ~]# sar -u 1 5
[root@jay-linux ~]# vmstat -n 1 5
[root@jay-linux ~]# mpstat -P ALL 1 5

Linux的Load(系统负载),是一个让新手不太容易了解的概念。top/uptime等工具默认会显示1分钟、5分钟、15分钟的平均Load。具体来说,平均Load是指,在特定的一段时间内统计的正在CPU中运行的(R状态)、正在等待CPU运行的、处于不可中断睡眠的(D状态)的任务数量的平均值。

我估计也没说的太清楚,看下wikipedia上的一段话吧:An idle computer has a load number of 0. Each process using or waiting for CPU (the ready queue or run queue) increments the load number by 1. Most UNIX systems count only processes in the running (on CPU) or runnable (waiting for CPU) states. However, Linux also includes processes in uninterruptible sleep states (usually waiting for disk activity), which can lead to markedly different results if many processes remain blocked in I/O due to a busy or stalled I/O system.

还有man sar中的解释:The load average is calculated as the average number of runnable or  running tasks (R state), and the number of tasks in uninterruptible sleep (D state) over the specified interval.

对于一个系统来说,多少的Load算合理,多少又算Load高呢?

一般来说,对于Load的数值不要大于系统的CPU核数(或者开启了超线程,超线程也当成CPU core吧)。当然,有人觉得Load等于CPU core数量的2倍也没事,不过,我自己是在Load达到CPU core数量时,一般都会去查看下是什么具体原因导致load较高的。

Linux中查看Load的命令,推荐如下:

[root@jay-linux ~]# top
[root@jay-linux ~]# uptime
[root@jay-linux ~]# sar -q 1 5

最后,说一下CPU使用率和Load的关系吧。如果主要是CPU密集型的程序在运行(If CPU utilization is near 100 percent (user + nice  +  system), the workload sampled is CPU-bound.),那么CPU利用率高,Load一般也会比较高。而I/O密集型的程序在运行,可能看到CPU的%user, %system都不高,%iowait可能会有点高,这时的Load通常比较高。同理,程序读写慢速I/O设备(如磁盘、NFS)比较多时,Load可能会比较,而CPU利用率不一定高。这种情况,还经常发生在系统内存不足并开始使用swap的时候,Load一般会比较高,而CPU使用率并不高。

本文就简单说这么多了,想了解更全面的信息,可参考以下方法:

1. man sar, man top  (认真看相关解析,定有收获)

2. wikipedia:http://en.wikipedia.org/wiki/Load_%28computing%29

3. 帮助理解Load:http://blog.scoutapp.com/articles/2009/07/31/understanding-load-averages

4. 帮助理解load的中文博客:http://www.blogjava.net/cenwenchu/archive/2008/06/30/211712.html



本文转载自:http://www.tuicool.com/articles/y2YFjey

共有 人打赏支持
fdhay
粉丝 9
博文 69
码字总数 2796
作品 0
成都
高级程序员
深入理解load averages

前言 经常和Linux打交道的童鞋都知道,load averages是衡量机器负载的关键指标,但是这个指标是怎样定义出来的呢? 和其他系统不同,Linux上的load averages不仅追踪可运行的任务,还追踪处于...

大蟒传奇
05/30
0
0
判断Linux load的值是否过高

接触过和使用过unix或linux的朋友,都知道如何查看Unix/Linux load的值,这边我也重复一下查看load的方法: [root@www.linuxidc.com ~]# uptime13:33:37 up 7 days, 1:52, 1 user, load aver...

zlfwmm
06/26
0
0
服务器性能指标(二)——CPU利用率分析及问题排查

平常的工作中,在衡量服务器的性能时,经常会涉及到几个指标,load、cpu、mem、qps、rt等。每个指标都有其独特的意义,很多时候在线上出现问题时,往往会伴随着某些指标的异常。大部分情况下...

06/02
0
0
Linux 性能诊断:负载评估 (v2)

概要:负载诊断流程 观察load average (平均负载) 观察CPU、I/O是否存在瓶颈 从load avgerage等总括性的数据着手,参考CPU使用率和I/O等待时间等具体的数字,从而自顶向下快速排查各进程状态...

RiboseYim
2017/12/19
0
0
Linux shell采集系统资源

#!/bin/bash ############################################### #监控系统负载与CPU、内存、硬盘,超出警戒值则发告警# ############################################### ######配置###### ......

浅水ing
06/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

qduoj~前端~二次开发~打包docker镜像并上传到阿里云容器镜像仓库

上一篇文章https://my.oschina.net/finchxu/blog/1930017记录了怎么在本地修改前端,现在我要把我的修改添加到部署到本地的前端的docker容器中,然后打包这个容器成为一个本地镜像,然后把这...

虚拟世界的懒猫
今天
1
0
UML中 的各种符号含义

Class Notation A class notation consists of three parts: Class Name The name of the class appears in the first partition. Class Attributes Attributes are shown in the second par......

hutaishi
今天
1
0
20180818 上课截图

小丑鱼00
今天
1
0
Springsecurity之SecurityContextHolderStrategy

注:下面分析的版本是spring-security-4.2.x,源码的github地址是: https://github.com/spring-projects/spring-security/tree/4.2.x 先上一张图: 图1 SecurityContextHolderStrategy的三个......

汉斯-冯-拉特
今天
1
0
LNMP架构(Nginx负载均衡、ssl原理、生成ssl密钥对、Nginx配置ssl)

Nginx负载均衡 网站的访问量越来越大,服务器的服务模式也得进行相应的升级,比如分离出数据库服务器、分离出图片作为单独服务,这些是简单的数据的负载均衡,将压力分散到不同的机器上。有时...

蛋黄_Yolks
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部