Pages

Thursday, 31 December 2015

测试Linux服务器I/O性能的两种方法

多数朋友在买到Linux系统的VPS以后,常常对VPS的性能产生兴趣,通过对VPS进行性能测试,不仅能够了解所用VPS的性能是否能对得起价格,也是能够从侧面反映服务器的整体状况,估算出主机商是否存在滥用。
对于VPS的性能评测,跑分当然可以相对全面的把性能展现出来,但跑分的时间过长,而且特别费CPU,所以,测试硬盘I/O的性能是个不错的选择,当然一台VPS的价格并不能仅仅用I/O的性能来概括,在这里,我们仅仅是对I/O的测试列举一些方法,VPS的价格还需要综合考量。
测试 I/O 的方法常见的就有好几种,尤其是 DD 测试存在较大差异!在这里介绍一些DD测试的命令以及区别。
DD测试
DD测试其实仅仅是对文件的读写测试罢了,此方法相对于传统机械硬盘或许有些参考价值但是对于SSD硬盘就不见得了。
dd bs=64k count=4k if=/dev/zero of=test最没有参考价值,很多垃圾VPS都会用这个
dd bs=64k count=4k if=/dev/zero of=test; sync不怎么严格
dd bs=64k count=4k if=/dev/zero of=test conv=fdatasync国外标准,不怎么严格
dd bs=64k count=4k if=/dev/zero of=test oflag=dsync国内标准,严格,有参考价值
解释一下,第一条DD命令是最没有什么参考价值的,此方法和最后一条DD命令的结果可能会有400倍的差距,一些不良主机商会借此结果说服务器的I/O多么强大等等;另外,有些不良主机商会用母鸡在分配小鸡以前的DD测试结果来描述VPS的I/O性能,这也是非常不准确的,因为母鸡在没有分配小鸡的时候的性能表明是整台服务器的性能,而满载小鸡后的性能可能会出现惨不忍睹的情况。所以说,大家在购买VPS以后,还是分别检测下VPS的I/O性能以及网速。
使用DD测试方法,黑桃建议大家使用最后一条命令,结果超过10M则正常建站无压力,超过50M差不多就已经是优秀的水平了。最后一条测试命令很严格,也是国内发烧玩家最喜欢的了。
Hdparm
Hdparm(hard disk parameters)可检测、显示与设定IDE或SCSI硬盘的参数,测试各硬盘读取速度判断硬盘故障。此方法对SSD硬盘的检测有很参考价值。
1.安装Hdparm:
Redhat、Centos、fedora 系统:
yum -y install hdparm
Debian、Ubuntu系统:
apt-get -y install hdparm
2.执行测试命令:
hdparm -t /dev/xvda
注:“/dev/xvda”指的是对应磁盘的驱动号,xvda 是使用 Xen DomainU 所虚拟出来之主磁盘,不同虚拟化可以会不同,请执行“fdisk -l”或“df -lh”查看。
PS:延伸一下,独立服务器可以用以下命令
hdparm -t /dev/hda (IDE硬盘)
hdparm -t /dev/sda (SATA、SCSI、硬RAID卡阵列)
hdparm -t /dev/md0 (软RAID设备)
Hdparm命令参数:
-a<快取分区> 设定读取文件时,预先存入块区的分区数,若不加上<快取分区>选项,则显示目前的设定。
-A<0或1> 启动或关闭读取文件时的快取功能。
-c 设定IDE32位I/O模式。
-C 检测IDE硬盘的电源管理模式。
-d<0或1> 设定磁盘的DMA模式。
-f 将内存缓冲区的数据写入硬盘,并清楚缓冲区。
-g 显示硬盘的磁轨,磁头,磁区等参数。
-h 显示帮助。
-i 显示硬盘的硬件规格信息,这些信息是在开机时由硬盘本身所提供。
-I 直接读取硬盘所提供的硬件规格信息。
-k<0或1> 重设硬盘时,保留-dmu参数的设定。
-K<0或1> 重设硬盘时,保留-APSWXZ参数的设定。
-m<磁区数> 设定硬盘多重分区存取的分区数。
-n<0或1> 忽略硬盘写入时所发生的错误。
-p 设定硬盘的PIO模式。
-P<磁区数> 设定硬盘内部快取的分区数。
-q 在执行后续的参数时,不在屏幕上显示任何信息。
-r<0或1> 设定硬盘的读写模式。
-S<时间> 设定硬盘进入省电模式前的等待时间。
-t 评估硬盘的读取效率。
-T 平谷硬盘快取的读取效率。
-u<0或1> 在硬盘存取时,允许其他中断要求同时执行。
-v 显示硬盘的相关设定。
-W<0或1> 设定硬盘的写入快取。
-X<传输模式> 设定硬盘的传输模式。
-y 使IDE硬盘进入省电模式。
-Y 使IDE硬盘进入睡眠模式。
-Z 关闭某些Seagate硬盘的自动省电功能