CPU性能--平均负载

平均负载

  • 单位时间内,系统处于可运行状态(R)不可中断状态(D)的平均进程数,也就是平均活跃进程数,和cpu没有直接关系。

  • 那么进程常见状态解释和代号如下:

$ man ps
Here are the different values that the s, stat and state output specifiers (header "STAT" or "S") will display to describe the state of a process:
               D    uninterruptible sleep (usually IO)
               R    running or runnable (on run queue) )
               S    interruptible sleep (waiting for an event to complete)
               T    stopped by job control signal
               t    stopped by debugger during the tracing
               W    paging (not valid since the 2.6.xx kernel)
               X    dead (should never be seen)
               Z    defunct ("zombie") process, terminated but not reaped by its parent
  • 可运行状态进程:正在使用或者等待cpu的进程。ps命令看到的处于R状态(Running or Runnable)的进程。

  • 不可中断状态进程:处于和IO访问状态,并且这些流程是不可打断的。比如常见的是等待硬件设备的/IO响应。ps命令看到的D状态(Uniterruptible Sleep 也称Disk Sleep)的进程。

    • 不可中断状态实际上是对进程和硬件的一种保护机制。
    • 比如:当一个进程向磁盘写数据时,为了保证数据一致性,在得到磁盘回复之前,它是不能被其它进程中断打断的,这个时候进程处于不可中断状态。
  • 查看系统负载情况

# 周期性查看系统负载信息,并显示变化的部分
$ watch -d uptime
 当前时间  系统运行时间     正在登陆的用户 1分钟、5分钟、15分钟的平均负载
 07:49:31 up 1 day,  7:59,  1 user,  load average: 0.00, 0.01, 0.05

CPU使用率

  • 单位时间内CPU繁忙情况的统计,和平均负载不一定完全对应。

平均负载高产生原因

  • CPU密集型进程,使用大量CPU会导致平均负载高,此时cpu使用率也高。
  • I/O密集型进程,等待I/O导致负载升高,但CPU使用率不一定高。
  • 大量等待CPU的进程调度也会导致平均负载升高,此时CPU使用率也会比较高。
# 查看系统有几个cpu
$ grep 'model name' /proc/cpuinfo | wc -l
40

平均负载多少合理

  • 平均负载理想情况是等于CPU个数。
  • 一般平均负载高于CPU数量70%的时候,应该分析。(不是绝对)
  • 负载变高会导致进程响应变慢,进而影响服务正常功能。

平均负载案例分析

  • 压力测试工具:stress,用来模拟进程平均负载身高情况
  • 性能分析工具:sysstat,用来监控分析系统性能,这个包包含了mpstat、pidstat两个命令
    • mpstat: 用来查看每个cpu性能指标,以及所有cpu平均指标。
    • pidstat: 实时查看进程的cpu、内存、I/O以及上下文切换等性能指标。
# 安装
$ sudo yum install sysstat  stress

查看应用是CPU密集型还是IO密集型

  • 1.先查看当前系统负载uptime是否高
$ watch -d uptime
  • 2.查看负载升高的原因?
    cpu密集(%usr)、io密集(%iowait,%system)、大量等待cpu进程调度(负载明显大于cpu数)
每隔5秒查看每个cpu的指标,以及整体cpu平均指标
$ mpstat -P ALL 5 
  • 3.查看哪个应用造成了负载升高,即哪个应用,造成了上面的cpu密集(%CPU)、io密集(%system%wait)、大量等等cpu进程调度(%wait)。(如果当前系统只有一个应用,那就很方便了,不然,有可能是多个应用造成的)。
每隔5秒输出一组进程cpu使用数据(-u)
$ pidstat -u 5 1

测试环境

项目 说明
总的cpu核心 2
内存 4.3G

CPU密集型应用

# 开启两个worker进行耗费cpu计算
$ stress -c 2

$ uptime
# 负载大于cup核心数,说明负载高
16:34:34 up 45 min,  2 users,  load average: 3.00, 2.71, 1.59

用htop观察

$ htop
  • 进程的颜色是绿色,cpu使用率高


    image.png

用mpstat

#每隔5秒查看每个cpu的指标,以及整体cpu平均指标
$mpstat -P ALL 5
  • %usr值很高,%iowait低,说明cpu都花费在计算上
    image.png

用pidstat

  • 查看进程cpu使用情况
每隔5秒输出一组进程cpu使用数据(-u)
$ pidstat -u 5
  • 可以看到是stress引起的负载升高
  • %usr高,说明stress进程cpu利用率高,%wait高,说明cpu不够用在等待cpu调度上花费了不少时间。


    看应用的cpu使用情况
# 查看pid=1859进程的cpu利用率情况
$pidstat -p 1859 -u 5
  • %wait为33.8%,说明等待情况有点久。


    image.png

IO密集型应用

$stress -i 1

htop观察

  • 最近1分钟的负载为1.02,说明当前的平均活跃进程为1(即状态为R或D的进程)

  • 红色,代表当前使用cpu的进程是io型

  • stress进程的状态为D

io密集型表现

mpstat

mpstat -P ALL 5
  • %idle值搞,说明cpu整体在空闲。%iowait高,说明cpu在等待io上花费时间多。


    image.png

pidstat

  • 查看进程io和cpu情况
pidstat -ud 5
  • stress进程的iodelay延迟很高,但是rd,wr不高,cpu利率也底,说明在进行sync操作,都花在了io同步上了。


    image.png

大量等待CPU调度

# 进程数大于cpu数,会导致cpu切换频繁(此时系统cpu为4)
$stress -c 8
系统负载为8高于cpu个数4

mpstat

  • 每个cpu利用率都高,但是过多进程竞争,也会导致cpu整体利用率高(all)


pidstat

  • 可以看到,8个进程在竞争4个cpu,每个进程等待cpu的时间达到50%(%wait),这些超出cpu计算能力的进程,导致了负载变高


    竞争
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,126评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,254评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,445评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,185评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,178评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,970评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,276评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,927评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,400评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,883评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,997评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,646评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,213评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,204评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,423评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,423评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,722评论 2 345

推荐阅读更多精彩内容