写点什么

Linux 性能诊断:负载评估入门

用户头像
RiboseYim
关注
发布于: 2020 年 04 月 22 日
Linux 性能诊断:负载评估入门

一、什么是负载

 

负载可以分为两大部分:CPU负载、I/O 负载 。

从load avgerage等总括性的数据着手,参考CPU使用率和I/O等待时间等具体的数字,从而自顶向下快速排查各进程状态。



load average





依次时过去1分钟,5分钟,15分钟内,单位时间的等待任务数,也就是表示平均有多少任务正处于等待状态。在load average较高的情况下,就说明等待运行的任务较多,因此轮到该任务运行的等待时间就会出现较大延迟,即反映了此时负载较高。

进程调度器(Process Scheduler)

负责决定任务运行的优先级,以及让任务等待或使之重新开始等核心工作。调度器划分并管理进程(Process)的状态。例如:





load average 表示“等待进程的平均数”,除了“TASK_RUNNING正在运行”,其它三个都是等待状态。TASK_INTERRUPTIBLE不被换算。即只换算“虽然需要即刻运行处理,但是无论如何都必须等待”。

 

load average所描述的负载就是:需要运行处理,但又必需等待队列前的进程处理完成的进程个数。具体来说:要么等待授予CPU运行权限,要么等待磁盘I/O完成。

- 内核函数:kernei/timer.c的calc-load();

- 调用周期:每次计时器中断(centos为4ms)

 

二、区分负载类型

 

load average的数字只是表示等待的任务数,仅根据load average并不能判断具体是CPU负载高还是I/O负载高。

 

CPU密集型程序

I/O密集型程序

 

三、负载诊断工具

 

进程查看工具 sar

 

CPU使用率和I/O等待时间都是在不断变化的,可以通过Sar (System Activity Reporter)命令来确认这些指标。sar 工具包含在sysstat 软件包内。





输出参数:

- %user:用户(一般的应用软件运作模式)CPU资源

- %system:系统(内核运作)占用CPU资源

- %iowait:I/O等待率。

进程查看工具 ps



输出参数:

- %CPU:该进程的CPU使用率

- %memb:物理内存百分比

- VSZ、RSS:虚拟/物理内存

- STAT:进程状态(非常重要)

- TIME:CPU占用时间

吞吐查看工具 sar



查看SWAP吞吐



输出参数:

- pswpin/s:每秒系统换入的页面数

- pswpout/s:每秒系统换出的页面数

 

发生频繁的交换时,服务器的吞吐量性能会大幅下降。

 

内存内存工具vmstat

 

vmstat(Report Virtual Memory Statistics) 实时确认CPU使用率及实际的I/O等待时间





四、总结

优化的真正工作是“找出系统瓶颈并加以解决”,我们所能做的就是“充分发挥硬/软件本来的性能,解决可能存在的问题”。例如,同样是I/O问题,我们可以通过增加内存来缓解,也可以调整调度方案来优化(时间换空间),但是更多的情况是,优化应用程序的I/O算法效果更佳。

 

最后,重温一句经典格言:“别臆断,请监控“。



发布于: 2020 年 04 月 22 日阅读数: 71
用户头像

RiboseYim

关注

工程师 2012.02.26 加入

https://riboseyim.com 微信公众号@睿哥杂货铺

评论

发布
暂无评论
Linux 性能诊断:负载评估入门