suse linux下磁盘io性能监测分析,SUSE LINUX下磁盘IO性能监测分析

这两天发现一台测试用的服务器经常负载很高,但cpu和内存消耗却很少,很是奇怪,经过诊断发现是由于大容量的测试数据导致高并发下的磁盘IO消耗比较大,由于缓存是小文件并且数量比较大,所以并发比较高的情况下Io消耗非常大。那怎样才能快速的定位到并发高是由于磁盘io开销大呢?

一、用 top 命令中的 信息进行观察

204027418.jpg

划红线的参数解释如下:

Tasks: 437 total 进程总数

4 running 正在运行的进程数

430 sleeping 睡眠的进程数

3 stopped 停止的进程数

0 zombie 僵尸进程数

Cpu(s):

7.1% us 用户空间占用CPU百分比

4.2% sy 内核空间占用CPU百分比

0.0% ni 用户进程空间内改变过优先级的进程占用CPU百分比

76.8% id 空闲CPU百分比

12% wa 等待输入输出的CPU时间百分比

12% wa 的百分比可以大致的体现出当前等待输入输出的磁盘io请求过于频繁。

为进一步分析,我们跟踪关键进程定位程序

#strace  -p  28644  (如图示占用CPU较高)

205645745.jpg

说明在多线程条件下,如果并发操作过于频繁,semtimedop会调用失败,Input/output  出错。

进一步定位到程序 #ps  -ef | grep  28644

210320529.jpg

可以知道是ora_lgwr_nms程序导致的读写开销比较大。

二、利用IOSTAT命令观察

磁盘的IO性能是衡量计算机总体性能的一个重要指标。Linux提供了iostat命令来获却磁盘输入/输出(即IO)统计信息。

#iostat  -x   1  统计完整的结果,每秒一次。

211124839.jpg

iowait的值比较大,说明读写频繁。

#iostat  -p   1统计各个分区的读写情况,每秒1次。

083525343.jpg

使用 #mount  命令,来对应查找就知道sda5对应的/opt分区和sdb8对应的/data分区读写频繁。

083648227.jpg

再定位到DATA分区,查看数据库归档情况,发现一分钟内归档产生四个文档并且每个文件有48M这么大,写入应该非常频繁,导致磁盘IO开销比较大。

083838990.jpg

而OPT分区由于有FTP传输到导致磁盘开销比较大。

分析定位完毕,针对相关问题调整FTP和数据库归档,然后再看一下都正常了。

084733678.jpg

084802567.jpg

总结:TOP、IOSTAT都是比较常见的命令,通过基本命令的灵活应用来分析和定位问题是比较方便的,特别是基本命令的参数选择和使用更是值得我们大家研究的。

补充:磁盘IOPS知识

IOPS (Input/Output Per Second)即每秒的输入输出量(或读写次数),是衡量磁盘性能的主要指标之一。IOPS是指单位时间内系统能处理的I/O请求数量,一般以每秒处理的I/O请求数量为单位,I/O请求通常为读或写数据操作请求。随机读写频繁的应用,如OLTP(Online Transaction Processing),IOPS是关键衡量指标。另一个重要指标是数据吞吐量(Throughput),指单位时间内可以成功传输的数据数量。对于大量顺序读写的应用,如VOD(Video On Demand),则更关注吞吐量指标。

传统磁盘本质上一种机械装置,如FC, SAS, SATA磁盘,转速通常为5400/7200/10K/15K rpm不等。影响磁盘的关键因素是磁盘服务时间,即磁盘完成一个I/O请求所花费的时间,它由寻道时间、旋转延迟和数据传输时间三部分构成。

寻道时间Tseek是指将读写磁头移动至正确的磁道上所需要的时间。寻道时间越短,I/O操作越快,目前磁盘的平均寻道时间一般在3-15ms。

旋转延迟Trotation是指盘片旋转将请求数据所在扇区移至读写磁头下方所需要的时间。旋转延迟取决于磁盘转速,通常使用磁盘旋转一周所需时间的1/2表示。比如,7200 rpm的磁盘平均旋转延迟大约为60*1000/7200/2 = 4.17ms,而转速为15000 rpm的磁盘其平均旋转延迟约为2ms。

数据传输时间Ttransfer是指完成传输所请求的数据所需要的时间,它取决于数据传输率,其值等于数据大小除以数据传输率。目前IDE/ATA能达到133MB/s,SATA II可达到300MB/s的接口数据传输率,数据传输时间通常远小于前两部分时间。

因此,理论上可以计算出磁盘的最大IOPS,即IOPS = 1000 ms/ (Tseek + Troatation),忽略数据传输时间。假设磁盘平均物理寻道时间为3ms, 磁盘转速为7200,10K,15K rpm,则磁盘IOPS理论最大值分别为,

IOPS = 1000 / (3 + 60000/7200/2) = 140

IOPS = 1000 / (3 + 60000/10000/2) = 167

IOPS = 1000 / (3 + 60000/15000/2) = 200

决定IOPS的主要取决与阵列的算法,cache命中率,以及磁盘个数。阵列的算法因为不同的阵列不同而不同.在raid5与raid10上,读iops没有差别,但是相同的业务,写iops最终落在每块磁盘上是有差别的,如果达到了每块磁盘的写的i0ps限制,性能会受到影响。对于raid5来说每一个写实际发生了4个io,而raid10只发生了2次io,所以raid10比raid5在写上要快一些。

本文出自 “滴水穿石孙杰” 博客,谢绝转载!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值