码迷,mamicode.com
首页 > 编程语言 > 详细

阿里云主机SSD实例磁盘测试及IO调度算法调整

时间:2016-01-15 20:09:30      阅读:296      评论:0      收藏:0      [点我收藏+]

标签:

测试背景及环境说明

阿里云ECS

主机配置:

  4C8G

root@zabbix-master:~# grep -i "model name" /proc/cpuinfo
model name    : Intel(R) Xeon(R) CPU E5-2650 v2 @ 2.60GHz
model name    : Intel(R) Xeon(R) CPU E5-2650 v2 @ 2.60GHz
model name    : Intel(R) Xeon(R) CPU E5-2650 v2 @ 2.60GHz
model name    : Intel(R) Xeon(R) CPU E5-2650 v2 @ 2.60GHz
root@zabbix-master:~#
root@zabbix-master:~# free -m
             total       used       free     shared    buffers     cached
Mem:          8008       7863        144          0        209       6666
-/+ buffers/cache:        987       7020
Swap:            0          0          0
root@zabbix-master:~# 

系统盘: SSD优化实例 20GB

数据盘: SSD 300GB

root@zabbix-master:~# lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
vda    254:0    0    20G  0 disk
├─vda1 254:1    0    20G  0 part /
└─vda2 254:2    0     1M  0 part
vdb    254:16   0   300G  0 disk /data
sr0     11:0    1  1024M  0 rom  
root@zabbix-master:~#

操作系统:Debian 8.2

root@zabbix-master:~# cat /etc/debian_version
8.2
root@zabbix-master:~#

测试目的

测试阿里云SSD的IO性能(主要是写入),并选取合适的IO调度算法

测试步骤

查看系统支持的IO调度算法

root@zabbix-master:~# dmesg |grep -i scheduler
[    0.489195] io scheduler noop registered
[    0.489196] io scheduler deadline registered
[    0.489447] io scheduler cfq registered (default)
root@zabbix-master:~#

测试系统盘vda

查看vda使用IO调度算法,是cfq

root@zabbix-master:/tmp# cat  /sys/block/vda/queue/scheduler
noop deadline [cfq]
root@zabbix-master:/tmp#

测试cfq下vda的写入

root@zabbix-master:/tmp# dd bs=1M count=1024 if=/dev/zero of=/tmp/test.w conv=fdatasync
记录了1024+0 的读入
记录了1024+0 的写出
1073741824字节(1.1 GB)已复制,17.1651 秒,62.6 MB/秒
root@zabbix-master:/tmp#
root@zabbix-master:/tmp# du -sh test.w
1.1G    test.w
root@zabbix-master:/tmp#

将调整为noop进行测试

root@zabbix-master:/tmp# echo noop > /sys/block/vda/queue/scheduler
root@zabbix-master:/tmp# cat /sys/block/vda/queue/scheduler
[noop] deadline cfq
root@zabbix-master:/tmp#
root@zabbix-master:/tmp# rm -f test.w
root@zabbix-master:/tmp#
root@zabbix-master:/tmp# dd bs=1M count=1024 if=/dev/zero of=/tmp/test.w conv=fdatasync
记录了1024+0 的读入
记录了1024+0 的写出
1073741824字节(1.1 GB)已复制,17.5197 秒,61.3 MB/秒
root@zabbix-master:/tmp#

测试数据盘vdb

查看vdb使用IO调度算法,是cfq

root@zabbix-master:/data/dd_test# cat  /sys/block/vdb/queue/scheduler
noop deadline [cfq]
root@zabbix-master:/data/dd_test#

测试cfq下vdb的写入

root@zabbix-master:/data/dd_test# dd bs=1M count=1024 if=/dev/zero of=/data/dd_test/test.w conv=fdatasync
记录了1024+0 的读入
记录了1024+0 的写出
1073741824字节(1.1 GB)已复制,5.5823 秒,192 MB/秒
root@zabbix-master:/data/dd_test#
root@zabbix-master:/data/dd_test# du -sh  test.w
1.1G    test.w
root@zabbix-master:/data/dd_test#

调整为noop进行测试

root@zabbix-master:/data/dd_test# echo noop > /sys/block/vdb/queue/scheduler
root@zabbix-master:/data/dd_test# cat  /sys/block/vdb/queue/scheduler
[noop] deadline cfq
root@zabbix-master:/data/dd_test#
root@zabbix-master:/data/dd_test# rm  -f test.w
root@zabbix-master:/data/dd_test#
root@zabbix-master:/data/dd_test# dd bs=1M count=1024 if=/dev/zero of=/data/dd_test/test.w conv=fdatasync
记录了1024+0 的读入
记录了1024+0 的写出
1073741824字节(1.1 GB)已复制,5.73825 秒,187 MB/秒
root@zabbix-master:/data/dd_test#

调整为deadline进行测试

root@zabbix-master:/data/dd_test# echo deadline > /sys/block/vdb/queue/scheduler
root@zabbix-master:/data/dd_test# cat /sys/block/vdb/queue/scheduler
noop [deadline] cfq
root@zabbix-master:/tmp#
root@zabbix-master:/data/dd_test# du -sh  test.w
1.1G    test.w
root@zabbix-master:/data/dd_test#
root@zabbix-master:/data/dd_test# rm  -f test.w
root@zabbix-master:/data/dd_test#
root@zabbix-master:/data/dd_test# dd bs=1M count=1024 if=/dev/zero of=/data/dd_test/test.w conv=fdatasync
记录了1024+0 的读入
记录了1024+0 的写出
1073741824字节(1.1 GB)已复制,5.63042 秒,191 MB/秒
root@zabbix-master:/data/dd_test#

顺便测试跨盘(vda-->vdb)读写

root@zabbix-master:/data/dd_test# dd if=/dev/vda1 of=/data/dd_test/test.w bs=1M count=1024 conv=fdatasync
记录了1024+0 的读入
记录了1024+0 的写出
1073741824字节(1.1 GB)已复制,18.1907 秒,59.0 MB/秒
root@zabbix-master:/data/dd_test#

测试结果

①:虽然阿里云的系统盘声称也是SSD,但是系统盘的读写速度明显不及数据盘.
②:系统盘和数据盘的写入速度(1M)在noop下和cfq还有deadline下没有明显的差异

疑问

跨盘读写测试中的瓶颈的出现在哪里?
    vda读?
    vdb写?
    网络?
PS:或许这个疑问的解答需要详细的准备测试计划进行测试,同时测试1K,4K,8K,1M等数据大小;并分别测试读,写,双向跨盘读写.

最终IO调度算法的选择

    系统盘: 仍然是cfq
    数据盘: 选用deadline

参考调优准则:

  Deadline对数据库环境(ORACLE RAC,MYSQL等)是最好的选择,由于数据盘主要是作为MySQL数据库的数据目录来使用,遵从此准则进行调整.

原因:

  Deadline确保了在一个截止时间内服务请求,这个截止时间是可调整的,而默认读期限短于写期限.这样就防止了写操作因为不能被读取而饿死的现象.
 

将IO调度算法的配置持久化写入

我没有使用修改grub的方式,而是将调整调度算法的操作写到rc.local中       
root@zabbix-master:/data/dd_test# grep scheduler /etc/rc.local
echo deadline > /sys/block/vdb/queue/scheduler
root@zabbix-master:/data/dd_test#

 

--此致--

阿里云主机SSD实例磁盘测试及IO调度算法调整

标签:

原文地址:http://www.cnblogs.com/thatsit/p/5134266.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!