评论

收藏

[Linux] linux性能调试之vmstat分析

服务系统 服务系统 发布于:2022-03-06 18:50 | 阅读数:476 | 评论:0

这篇文章主要介绍了linux性能调试之vmstat分析。小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
1.性能分析的目的
1)找出系统性能瓶颈(包括硬件瓶颈和软件瓶颈);
2)提供性能优化的方案(升级硬件?改进系统系统结构?);
3)达到合理的硬件和软件配置;
4)使系统资源使用达到最大的平衡。(一般情况下系统良好运行的时候恰恰各项资源达到了一个平衡体,任何一项资源的过渡使用都会造成平衡体系破坏,从而造成系统负载极高或者响应迟缓。比如cpu过渡使用会造成大量进程等待cpu资源,系统响应变慢,等待会造成进程数增加,进程增加又会造成内存使用增加,内存耗尽又会造成虚拟内存使用,使用虚拟内存又会造成磁盘io增加和cpu开销增加)
2.影响性能的因素
1)cpu(cpu的速度与性能很大一部分决定了系统整体的性能,是否使用smp)
2)内存(物理内存不够时会使用交换内存,使用swap会带来磁盘i0和cpu的开销)
3)硬盘(存储系统)
a.raid技术使用(raid0, raid1, raid5, raid0+1)
b.小文件读写瓶颈是磁盘的寻址(tps),大文件读写的性能瓶颈是带宽
c.linux可以利用空闲内存作文件系统访问的cache,因此系统内存越大存储系统的性能也越好
4)网络带宽。
3.性能分析的步骤
1)对资源的使用状况进行长期的监控和数据采集(nagios、cacti)
2)使用常见的性能分析工具(vmstat、top、free、iostat等)
3)经验积累
a.应用程序设计的缺陷和数据库查询的滥用最有可能导致性能问题
b.性能瓶颈可能是因为程序差/内存不足/磁盘瓶颈,但最终表现出的结果就是cpu耗尽,系统负载极高,响应迟缓,甚至暂时失去响应
c.物理内存不够时会使用交换内存,使用swap会带来磁盘i0和cpu的开销
d.可能造成cpu瓶颈的问题:频繁执perl,php,java程序生成动态web;数据库查询大量的where子句、order by/group by排序……
e.可能造成内存瓶颈问题:高并发用户访问、系统进程多,java内存泄露……
f.可能造成磁盘io瓶颈问题:生成cache文件,数据库频繁更新,或者查询大表……
4.vmstat详细介绍
vmstat:用于监控、显示系统运行过程中的虚拟内存/cpu/磁盘状态。
简单示例(时间间隔2s,监控2次):
DSC0000.png

重要字段解释:
r 表示运行队列(等待运行的进程数)
b 表示阻塞的进程
swpd 虚拟内存已使用的大小
free   空闲的物理内存的大小,我的机器内存总共8g,剩余3415m。
in 每秒cpu的中断次数,包括时间中断
cs 每秒上下文切换次数,比如系统调用,线程的切换。上下文切换次数过多表示你的cpu大部分浪费在上下文切换,导致cpu干正经事的时间少了,cpu没有充分利用,是不可取的。
us 用户cpu时间。
sy 系统cpu时间,如果太高,表示系统调用时间长,例如是io操作频繁。
id  空闲 cpu时间,一般来说,id + us + sy = 100。
wt 等待io cpu时间。
典型的问题现象
1.cpu问题
a.procs.r持续有值,且大于系统cpu数量,则认为系统不足以支撑当前的负载(因为一直有进程在等待运行),可能是软件实现问题或者需要升级硬件系统
b.cpu.id持续为0,表示cpu持续忙,需要根据cpu.sy,cpu.us继续查找原因
c.cpu.sy,cpu.us持续高,且cpu.sy大于cpu.us表示系统频繁在内核态执行,可能存在频繁的或较多的系统调用或者io访问
2.内存问题
a.memory.swpd数值持续有值,说明系统内存不足且使用了虚拟内存,需要加大内存。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持CodeAE代码之家
原文链接:http://www.cnblogs.com/llc-blog/p/8638431.html

关注下面的标签,发现更多相似文章