IO系统性能:在Linux中监视IO性能
dd命令 dd其实是工作于比较低层的一个数据拷贝和转换的*nix平台的工具,但是dd命令支持*nix平台的一些特殊设备,因此我们可以利用dd命令的这个特性来简单的测试磁盘的性能. 先说一下两个相关的特殊设备 /dev/null 空设备,通常用作输出设备,这个是*nix系统上面的黑洞,所有送到这个空设备上的内容都会凭空消失. /dev/zero 空字符,通常用作输入,从/dev/zero中读取时,它能源源不断的提供空字符(ASCII NUL, 0×00)出来,要多少有多少. 于是就有了下面的用法: 测试磁盘的写入 /usr/bin/time dd if=/dev/zero of=/tmp/foo bs=4k count=1024000 这个命令时往磁盘的文件/tmp/foo中写入一个4G大小的文件,当然文件的内容全部是空字符了,同时用/usr/bin/time来对命令的执行进行计时,命令中的bs指的是写入文件时的块大小,其实就相当于Oracle中的block大小了,count是写入的块数.采取这种方法来写入数据时只是测试的连续读磁盘的性能,而不是随机读的性能,不能采取这种方法检查一个机器的IOPS的,只能检查磁盘的吞吐率. 测试磁盘的读取 /usr/bin/time dd if=/tmp/foo of=/dev/null bs=4k 上面的命令是从/tmp/foo文件中读取数据,然后扔掉,这里bs用的是读取时块的大小.和上面写入的命令一样,这样测试的仅仅是最大的读取性能,而不是随机IO的性能. 还能读写同时测试 /usr/bin/time dd if=/tmp/foo of=/tmp/foo2 bs=4k 在上面的命令中都用到了time命令对操作进行计时,这样才能正确的进行判断.要记住的一点是dd命令只能够提供一个大概的测试,通过这个简单的命令可以对磁盘系统的最大性能有一个大概的了解,要了解更详细的信息还要通过其他方法来查看. topiostat命令 top理解iostat的各项输出 在Linux中,我们执行一个iostat -x命令,我们能看到如下的输出 $iostat -x Linux 2.4.21-50a6smp (linux) 11/03/2009 avg-cpu: %user %nice %sys %iowait %idle 0.42 0.00 0.26 0.47 98.86 Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util hdc 0.01 0.00 0.00 0.00 0.07 0.00 0.03 0.00 24.48 0.00 4.90 4.57 0.00 hda 0.89 8.54 0.74 4.49 12.60 104.22 6.30 52.11 22.32 0.03 5.41 1.01 0.53 我们先列举一下各个性能指标的简单说明. rrqm/s 每秒进行merge的读操作数目. wrqm/s 每秒进行merge的写操作数目. r/s 每秒完成的读I/O设备次数. w/s 每秒完成的写I/O设备次数. rsec/s 每秒读扇区数. wsec/s 每秒写扇区数. rkB/s 每秒读K字节数. wkB/s 每秒写K字节数. avgrq-sz 平均每次设备I/O操作的数据大小(扇区). avgqu-sz 平均I/O队列长度. await 平均每次设备I/O操作的等待时间(毫秒). svctm 平均每次设备I/O操作的服务时间(毫秒). %util 一秒中有百分之多少的时间用于I/O操作,或者说一秒中有多少时间I/O队列是非空的.
要理解这些性能指标我们先看下图 IO的执行过程的各个参数 上图的左边是iostat显示的各个性能指标,每个性能指标都会显示在一条虚线之上,这表明这个性能指标是从虚线之上的那个读写阶段开始计量的,比如说图中的w/s从Linux IO scheduler开始穿过硬盘控制器(CCIS/3ware),这就表明w/s统计的是每秒钟从Linux IO scheduler通过硬盘控制器的写IO的数量. 结 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |