Ubuntu模拟环境-stress、sysstat调优命令使用

  • uptime

10:34:03 up 2 days, 20:14, 1 user, load average: 0.63, 0.83, 0.88

 

10:34:03 // 当前时间

up 2 days, 20:14 // 系统运行时间

1 user // 正在登录用户数

0.63, 0.83, 0.88

1min、5min、15min 的平均负载

 

平均负载是指单位时间内,系统处于可运行状态和不可中断状态的平均进程数,也就是平均活跃进程数,它和 CPU 使用率并没有直接关系。

  • 可运行状态:R 状态(Running 或 Runnable)的进程
  • 不可中断状态:D 状态(Uninterruptible Sleep,也称为Disk Sleep)的进程

 

理想状态:每个cpu上都有一个活跃进程,即平均负载数等于cpu数

当平均负载高于 CPU 数量 70% 的时候,可能存在问题!!

 

一、平均负载与CPU使用率

 

既然平均负载代表的是活跃进程数,那平均负载高了,就意味着CPU使用率高么???

 

回到平均负载的含义上来:平均负载是指单位时间内,处于可运行状态和不可中断状态的进程数。所以,它不仅包括了正在使用CPU的进程,还包括等待CPU和等待I/O的进程。

 

CPU使用率:是单位时间内CPU繁忙情况的统计,跟平均负载并不一定完全对应。

比如:

·CPU密集型进程,使用大量CPU会导致平均负载升高,此时这两者是一致的;

·I/O密集型进程,等待I/O也会导致平均负载升高,但CPU使用率不一定很高;

·大量等待CPU的进程调度也会导致平均负载升高,此时的CPU使用率也会比较高。

 

 

二、相关命令

 

cpu核数: lscpu 、 grep 'model name' /proc/cpuinfo | wc -l

显示平均负载:uptime、top,显示的顺序是最近1分钟、5分钟、15分钟,从此可以看出平均负载的趋势

watch -d uptime: -d会高亮显示变化的区域

strees: 压测命令

--cpu cpu压测选项

-i io压测选项

-c 进程数压测选项

--timeout 执行时间

 

sysstat 包含了常用的 Linux 性能工具(mpstat、pidstat),用来监控和分析系统性能

 

mpstat是一个常用的多核CPU性能分析工具,用来实时查看每个CPU的性能指标,以及所

有CPU的平均指标,-P ALL监视所有cpu。

pidstat 是一个常用的进程性能分析工具,用来实时查看进程的CPU、内存、I/O以及上下文切换等性能指标,-u 显示cpu利用率。

 

 

三、平均负载过高时,如何调优

 

load average案例分析

 

工具:stress、sysstat,yum & apt即可安装

 

1. CPU密集型进程case:

 

模拟环境:

  • stress --cpu 1 --timeout 600

 

  • mpstat -P ALL 5

 

 

#-P ALL表示监控所有CPU,5表示每5秒刷新一次数据,观察是否有某个cpu的%usr会很高,但iowait应很低

watch -d uptime # 高亮变化区域

pidstat -u 5 1:每5秒输出一组数据,观察哪个进程%cpu很高,但是%wait很低,极有可能就是这个进程导致cpu飚高

 

 

2. IO密集型进程case:

 

  • stress -i 1 --timeout 600

mpstat -P ALL 5 1: 观察是否有某个cpu的%iowait很高,同时%usr也较高

pidstat -u 5 1:观察哪个进程%wait较高,同时%CPU也较高

 

 

3. 大量进程case:

 

  • stress -c 8 --timeout 600

pidstat -u 5 1:观察那些%wait较高的进程是否有很多

 

 

 

 

 

 

你可能感兴趣的:(Linux性能调优)