测试环境:
1.物理服务器:IBM 3650 M3,双CPU,16核。
2.虚拟化软件:ESXi 5.1
3.测试虚拟服务器:Redhat 6.3
测试目的:对比 4中IO算法的表现:noop anticipatory deadline cfq
下面是测试过程:
1.首先查看本地的磁盘空间和磁盘分区。
[root@RH02 ~]# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/mapper/vg_rh01-lv_root
7813292 2098312 5318080 29% /
tmpfs 961388 0 961388 0% /dev/shm
/dev/sda1 495844 37194 433050 8% /boot
2. 测试每种IO算法的表现
默认是CFQ:
[root@RH02 ~]# cat /sys/block/sda/queue/scheduler
noop anticipatory deadline [cfq]
[root@RH02 ~]# dd if=/dev/sda of=/dev/null bs=1M count=5000
5000+0 records in
5000+0 records out
5242880000 bytes (5.2 GB) copied, 23.2596 s, 225 M
改变为noop
[root@RH02 ~]# echo "noop" > /sys/block/sda/queue/scheduler
[root@RH02 ~]# dd if=/dev/sda of=/dev/null bs=1M count=5000
5000+0 records in
5000+0 records out
5242880000 bytes (5.2 GB) copied, 23.1398 s, 227 MB/s
改变为Deadline
[root@RH02 ~]# echo "deadline" > /sys/block/sda/queue/scheduler
[root@RH02 ~]# dd if=/dev/sda of=/dev/null bs=1M count=5000
5000+0 records in
5000+0 records out
5242880000 bytes (5.2 GB) copied, 24.4365 s, 215 MB/s
最后改为anticipatory
[root@RH02 ~]# echo "anticipatory" > /sys/block/sda/queue/scheduler
[root@RH02 ~]# dd if=/dev/sda of=/dev/null bs=1M count=5000
5000+0 records in
5000+0 records out
5242880000 bytes (5.2 GB) copied, 23.6097 s, 222 MB/s
从上面的测试结果可以看出,不同的IO算法在虚拟机上的表现不同。另外,我在一些技术书籍上也看到,建议在虚机服务器上启用noop.
我在网上找了一个老外写的blog,他的测试结果发现,不同的IO算法差别很大。
http://www.vmadmin.info/2012/10/linux-vm-io-scheduler-tuning.html
最后,我严重怀疑,我的服务器SAS磁盘接口是SAS2代。2代最高速度只有300MB/S. 我得查一查。