首页 技术 正文
技术 2022年11月19日
0 收藏 596 点赞 3,809 浏览 3972 个字

测试背景及环境说明

阿里云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#

–此致–

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,082
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,556
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,406
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,179
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,815
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,898