前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux 性能分析(二)

Linux 性能分析(二)

原创
作者头像
rupertzhang
修改2020-02-28 10:00:19
7050
修改2020-02-28 10:00:19
举报
文章被收录于专栏:云计算之 网络&操作系统

什么是平均负载

后续实验环境搭建

在腾讯云购买两台机器作为测试机器,机器配置如下:

image.png
image.png

先从命令uptime说起

代码语言:txt
复制
# uptime
 08:44:17 up 8 min,  1 user,  load average: 0.00, 0.03, 0.05 //分别是当前时间  系统运行时间  当前登录数  1/5/15 分钟系统平均负载

平均负载指单位时间内系统,系统处于 可运行状态不可中断状态 的平均进程数,也就是平均活跃

进程数,与CPU没有直接关系

平均负载最理想的情况是等于CPU个数

代码语言:txt
复制
grep 'model name' /proc/cpuinfo | wc -l
2

Stress 是一款压力测试工具 ,详情可参考http://stresslinux.org/sl/

Sysstat 包含了常用的性能工具

安装过程如下:

代码语言:txt
复制
git clone git://github.com/sysstat/sysstat
cd sysstat
./configure
make
sudo make install
  1. mpstat 是常用的多核CPU性能分析工具
  2. pidstat 是一个常用的进程分析工具

下面使用案例进行分析

  • 场景一 CPU 密集型测试
代码语言:txt
复制
stress --cpu 1 --timeout 600

同时打开三个终端进行观察

代码语言:txt
复制
# mpstat -P ALL 5 1 
Average:     CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
Average:     all   50.25    0.00    0.30    0.20    0.00    0.00    0.00    0.00    0.00   49.25
Average:       0  100.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00
Average:       1    0.60    0.00    0.40    0.20    0.00    0.00    0.00    0.00    0.00   98.80
代码语言:txt
复制
# watch -d uptime
代码语言:txt
复制
# pidstat -u 5 1

Average:      UID       PID    %usr %system  %guest    %CPU   CPU  Command
Average:        0      8551    0.00    0.20    0.00    0.20     -  YDService
Average:        0     19466  100.00    0.00    0.00  100.00     -  stress

通过观察我们可以发现stress进程会导致CPU 0 的利用率一直上升

1分钟的平均负载也会慢慢增加到1甚至大于1

  • 场景二 I/O密集型进程
代码语言:txt
复制
# stress -i 1 --timeout 600
代码语言:txt
复制
# watch uptime
10:31:32 up 1 day,  1:56,  3 users,  load average: 0.99, 0.59, 0.34
代码语言:txt
复制
#mpstat -P ALL 5 1
Average:     CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
Average:     all    0.20    0.00   45.99    4.11    0.00    0.00    0.00    0.00    0.00   49.70
Average:       0    0.00    0.00   91.37    7.83    0.00    0.00    0.00    0.00    0.00    0.80
Average:       1    0.20    0.00    0.60    0.40    0.00    0.00    0.00    0.00    0.00   98.80
  • 场景三 大量进程场景
代码语言:txt
复制
#stress -c 12 --timeout 600
代码语言:txt
复制
#watch uptime
18:42:28 up 1 day, 10:07,  3 users,  load average: 12.34, 5.83, 2.30
代码语言:txt
复制
#pidstat -u 5 1
Average:      UID       PID    %usr %system  %guest   %wait    %CPU   CPU  Command
Average:        0      2562    0.00    0.20    0.00    0.00    0.20     -  barad_agent
Average:        0      4745   16.77    0.00    0.00   84.63   16.77     -  stress
Average:        0      4746   16.57    0.00    0.00   83.83   16.57     -  stress
Average:        0      4747   16.57    0.00    0.00   83.23   16.57     -  stress
Average:        0      4748   16.57    0.00    0.00   83.63   16.57     -  stress
Average:        0      4749   16.77    0.00    0.00   83.63   16.77     -  stress
Average:        0      4750   16.57    0.00    0.00   82.24   16.57     -  stress
Average:        0      4751   16.57    0.00    0.00   83.23   16.57     -  stress
Average:        0      4752   16.57    0.00    0.00   83.63   16.57     -  stress
Average:        0      4753   16.57    0.00    0.00   83.23   16.57     -  stress
Average:        0      4754   16.77    0.00    0.00   83.03   16.77     -  stress
Average:        0      4755   16.77    0.00    0.00   83.43   16.77     -  stress

可以看出12个进程争夺2个CPU,导致 I/O wait 高达80% 以上,超过了CPU计算能力

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 什么是平均负载
    • 后续实验环境搭建
    相关产品与服务
    云服务器
    云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档