文档章节

Linux系统的CPU使用率和Load

fdhay
 fdhay
发布于 2016/04/18 19:33
字数 1165
阅读 102
收藏 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
成都
高级程序员
私信 提问
判断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
深入理解load averages

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

大蟒传奇
05/30
0
0
Linux shell采集系统资源

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

浅水ing
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

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周日乱弹 —— 钱不还,我就当你人不在了

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @莱布妮子 :分享Bigleaf的单曲《小鹿》 《小鹿》- Bigleaf 手机党少年们想听歌,请使劲儿戳(这里) 周日在家做什么? 做手工呀, @poorfis...

小小编辑
27分钟前
11
1
EOS docker开发环境

使用eos docker镜像是部署本地EOS开发环境的最轻松愉快的方法。使用官方提供的eos docker镜像,你可以快速建立一个eos开发环境,可以迅速启动开发节点和钱包服务器、创建账户、编写智能合约....

汇智网教程
今天
17
0
《唐史原来超有趣》的读后感优秀范文3700字

《唐史原来超有趣》的读后感优秀范文3700字: 作者:花若离。我今天分享的内容《唐史原来超有趣》这本书的读后感,我将这本书看了一遍之后就束之高阁了,不过里面的内容一直在在脑海中回放,...

原创小博客
今天
20
0
IC-CAD Methodology知识图谱

CAD (Computer Aided Design),计算机辅助设计,指利用计算机及其图形设备帮助设计人员进行设计工作,这个定义同样可以用来近似描述IC公司CAD工程师这个岗位的工作。 早期IC公司的CAD岗位最初...

李艳青1987
今天
24
0
CompletableFuture get方法一直阻塞或抛出TimeoutException

问题描述 最近刚刚上线的服务突然抛出大量的TimeoutException,查询后发现是使用了CompletableFuture,并且在执行future.get(5, TimeUnit.SECONDS);时抛出了TimeoutException异常,导致接口响...

xiaolyuh
今天
11
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部