LInux性能优化--CPU篇之平均负载

此偏文章为极客时间《Linux 性能优化实战》的其中一节课程内容总结,如有侵犯原作者著作权,请私信我删除

1、平均负载基本概念

在这里插入图片描述

2、实例分析

2.1、环境搭建

  1. 测试环境基于centos7.5版本
[root@domain ~]# uname -a
Linux domain 3.10.0-957.5.1.el7.x86_64 #1 SMP Fri Feb 1 14:54:57 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

cpu架构信息

[root@domain ~]# lscpu
Architecture:          x86_64          #架构--这里的64指的位处理器
CPU op-mode(s):        32-bit, 64-bit  
Byte Order:            Little Endian  #小端法
CPU(s):                4     #总处理器核心数量
On-line CPU(s) list:   0-3   #在线的cpu数量 有些时候为了省电或者过热的时候,某些CPU会停止运行
Thread(s) per core:    2   #每个核心支持的线程数量。1表示只支持一个线程,即不支持超线程
Core(s) per socket:    1    #每个插槽上有几个核心
Socket(s):             2    
NUMA node(s):          1
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 58
Model name:            Intel Xeon E3-12xx v2 (Ivy Bridge)
Stepping:              9
CPU MHz:               2099.998 #cpu主频
BogoMIPS:              4199.99 #MIPS是每秒百万条指令,Bogo是Bogus()的意思,这里是估算MIPS值
Hypervisor vendor:     KVM   #cpu支持的虚拟化技术
Virtualization type:   full   
L1d cache:             32K  #一级高速缓存 dcache 用来存储数据
L1i cache:             32K  #一级高速缓存 icache 用来存储指令
L2 cache:              4096K
L3 cache:              16384K
NUMA node0 CPU(s):     0-3
Flags:                 fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology eagerfpu pni pclmulqdq ssse3 cx16 pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm fsgsbase tsc_adjust smep erms xsaveopt arat

内存信息

[root@domain ~]# free
              total        used        free      shared  buff/cache   available
Mem:        8008860     5627264     1436388       13556      945208     2086444
Swap:       4064252           0     4064252
  1. -需要命令

    stress 是一个 Linux 系统压力测试工具,这里我们用作异常进程模拟平均负载升高的场景。而 sysstat 包含了常用的 Linux 性能工具,用来监控和分析系统的性能。我们的案例会用到这个包的两个命令 mpstat 和 pidstat。
    mpstat 是一个常用的多核 CPU 性能分析工具,用来实时查看每个 CPU 的性能指标,以及所有 CPU 的平均指标。
    pidstat 是一个常用的进程性能分析工具,用来实时查看进程的 CPU、内存、I/O 以及上下文切换等性能指标。

4.案例一:

实现一:
1、模拟CPU 100%

[root@domain ~]# stress --cpu 1 --timeout 600
stress: info: [22018] dispatching hogs: 1 cpu, 0 io, 0 vm, 0 hdd

2、uptime观察负载情况


# -d 参数表示高亮显示变化的区域
$ watch -d uptime
Every 2.0s: uptime                                                                                                                           Mon Dec  2 10:21:14 2019

 10:21:14 up 2 days, 18:35,  4 users,  load average: 1.05, 1.57, 1.84
#当前服务器时间:    10:21:14
#当前服务器运行时长  2 days, 18:35
#当前用户数          4 users
#当前的负载均衡      load average: 1.05, 1.57, 1.84,分别取1min,5min,15min的均值

3、mpstat 查看 CPU 使用率的变化情况

#-P ALL 表示监控所有CPU,后面数字5表示间隔5秒后输出一组数据
[root@domain ~]# mpstat -P ALL 5
Linux 3.10.0-957.5.1.el7.x86_64 (domain)        12/02/2019      _x86_64_        (4 CPU)

10:22:38 AM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
10:22:43 AM  all   25.03    0.00    0.05    0.00    0.00    0.00    0.00    0.00    0.00   74.92
10:22:43 AM    0    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
10:22:43 AM    1  100.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00
10:22:43 AM    2    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
10:22:43 AM    3    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00

CPU 1 的使用率为 100%,但它的 iowait 只有 0。这说明,平均负载的升高正是由于 CPU 使用率为 100% 。
4、确定那个进程导致cpu升高
stress导致的cpu升高100%

[root@domain ~]# pidstat -u 5 1
Linux 3.10.0-957.5.1.el7.x86_64 (domain)        12/02/2019      _x86_64_        (4 CPU)

10:25:01 AM   UID       PID    %usr %system  %guest    %CPU   CPU  Command
10:25:06 AM     0     16981    0.20    0.20    0.00    0.40     3  rsyslogd
10:25:06 AM     0     22019  100.00    0.00    0.00  100.00     1  stress
10:25:06 AM     0     22117    0.00    0.20    0.00    0.20     2  pidstat

Average:      UID       PID    %usr %system  %guest    %CPU   CPU  Command
Average:        0     16981    0.20    0.20    0.00    0.40     -  rsyslogd
Average:        0     22019  100.00    0.00    0.00  100.00     -  stress
Average:        0     22117    0.00    0.20    0.00    0.20     -  pidstat

5、案例二:IO密集型进程

  1. 模拟 I/O 压力,即不停地执行 sync
stress -i 1 --timeout 600
  1. 观察那个进程导致cpu升高
[root@domain ~]# pidstat -u 5 1
Linux 3.10.0-957.5.1.el7.x86_64 (domain)        12/02/2019      _x86_64_        (4 CPU)

10:33:35 AM   UID       PID    %usr %system  %guest    %CPU   CPU  Command
10:33:40 AM     0     16981    0.00    0.20    0.00    0.20     1  rsyslogd
10:33:40 AM     0     17889    0.00   13.17    0.00   13.17     2  kworker/u8:2
10:33:40 AM     0     22122    0.00   33.53    0.00   33.53     0  kworker/u8:1
10:33:40 AM     0     22293    0.60   66.67    0.00   67.27     1  stress
10:33:40 AM     0     22295    0.00    0.20    0.00    0.20     3  pidstat

Average:      UID       PID    %usr %system  %guest    %CPU   CPU  Command
Average:        0     16981    0.00    0.20    0.00    0.20     -  rsyslogd
Average:        0     17889    0.00   13.17    0.00   13.17     -  kworker/u8:2
Average:        0     22122    0.00   33.53    0.00   33.53     -  kworker/u8:1
Average:        0     22293    0.60   66.67    0.00   67.27     -  stress
Average:        0     22295    0.00    0.20    0.00    0.20     -  pidstat

7、案例三:模拟大量进程场景

[root@domain ~]# stress -c 8 --timeout 600
stress: info: [22296] dispatching hogs: 8 cpu, 0 io, 0 vm, 0 hdd
[root@domain ~]# pidstat -u 5 1
Linux 3.10.0-957.5.1.el7.x86_64 (domain)        12/02/2019      _x86_64_        (4 CPU)

10:36:15 AM   UID       PID    %usr %system  %guest    %CPU   CPU  Command
10:36:20 AM     0     22307   48.91    0.00    0.00   48.91     0  stress
10:36:20 AM     0     22308   49.70    0.00    0.00   49.70     1  stress
10:36:20 AM     0     22309   49.11    0.00    0.00   49.11     1  stress
10:36:20 AM     0     22310   50.69    0.00    0.00   50.69     3  stress
10:36:20 AM     0     22311   50.50    0.00    0.00   50.50     2  stress
10:36:20 AM     0     22312   49.50    0.00    0.00   49.50     3  stress
10:36:20 AM     0     22313   48.91    0.00    0.00   48.91     0  stress
10:36:20 AM     0     22314   49.70    0.00    0.00   49.70     0  stress
10:36:20 AM     0     22315    0.00    0.40    0.00    0.40     2  pidstat

Average:      UID       PID    %usr %system  %guest    %CPU   CPU  Command
Average:        0     22307   48.91    0.00    0.00   48.91     -  stress
Average:        0     22308   49.70    0.00    0.00   49.70     -  stress
Average:        0     22309   49.11    0.00    0.00   49.11     -  stress
Average:        0     22310   50.69    0.00    0.00   50.69     -  stress
Average:        0     22311   50.50    0.00    0.00   50.50     -  stress
Average:        0     22312   49.50    0.00    0.00   49.50     -  stress
Average:        0     22313   48.91    0.00    0.00   48.91     -  stress
Average:        0     22314   49.70    0.00    0.00   49.70     -  stress
Average:        0     22315    0.00    0.40    0.00    0.40     -  pidstat

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值