当前已经有应用在使用DRBD,没有过多的关注性能,准备对性能做个测试。
一. 硬件环境:
192.168.2.38 DELL 2950
192.168.2.39 DELL 2950
硬盘:4 x 146G + 2 x 300G SAS 做RAID1+0
硬盘详细信息如下:
scsi0 : LSI SAS based MegaRAID driver
Vendor:
SEAGATE Model:
ST3146855SS Rev: S527
Vendor:
SEAGATE Model:
ST3146855SS Rev: S527
Vendor:
SEAGATE Model:
ST3146855SS Rev: S527
Vendor:
SEAGATE Model:
ST3146855SS Rev: S527
Vendor:
SEAGATE Model:
ST3300657SS Rev: ES02
Vendor:
SEAGATE Model:
ST3300657SS Rev: ES02
二. 软件环境:
drbd83-8.3.2-6.el5_3.x86_64.rpm
kmod-drbd83-8.3.2-6.el5_3.x86_64.rpm
sysbench-0.4.12(make install)
三. 利用sysbench进行OLTP测试:
sysbench --test=oltp \
--num-threads=4 \
--oltp-table-size=10000 \
--mysql-host=localhost \
--db-driver=mysql --mysql-port=5555 \
--mysql-socket=/tmp/mysql5555.sock \
--mysql-user=root \
--mysql-password=jackbillow \
--mysql-db=test \
--mysql-table-engine=myisam run
上面的参数中,mysql使用myisam engine进行测试.
在DRBD机器执行消耗时间:
20.1039s
在硬盘执行消耗时间:
20.5973s
sysbench --test=oltp --num-threads=4 \
--oltp-table-size=10000 \
--mysql-host=localhost \
--db-driver=mysql \
--mysql-port=5555 \
--mysql-socket=/tmp/mysql5555.sock \
--mysql-user=root \
--mysql-password=jackbillow \
--mysql-db=test \
--mysql-table-engine=innodb prepare
上面的参数中,mysql使用innodb engine进行测试.
在DRBD机器执行消耗时间:
6.6680s
在硬盘执行消耗时间:
6.2485s
注:my.cnf使用的参数不够优化,但两次测试使用相同的cnf文件,测试中使用的参数比较小,为了减少等待时间.
四.
利用sysbench针对IO进行测试:sysbench --test=fileio
--file-num=1000 --file-total-size=5G --file-block-size=16384
--num-threads=1 --file-test-mode=rndwr run
利用1000个文件,总共5G,每个文件5.12M,1个线程,每个文件块大小16K,测试随机写。
在DRBD机器执行消耗时间:
0.2861s
在硬盘执行消耗时间:
0.0783s
sysbench --test=fileio --file-num=1000 --file-total-size=10G
--file-block-size=16384 --num-threads=1 --file-test-mode=rndwr
run
利用1000个文件,总共10G,每个文件10.24M,1个线程,每个文件块大小16K,测试随机写。
在DRBD机器执行消耗时间:
1.7098s
在硬盘执行消耗时间:
1.4850s
sysbench --test=fileio --file-num=100 --file-total-size=20G
--file-block-size=16384 --num-threads=1 --file-test-mode=rndwr
run
利用100个文件,总共20G,每个文件204.8M,1个线程,每个文件块大小16K,测试随机写。
在DRBD机器执行消耗时间:
58.5059s
在硬盘执行消耗时间:
56.2888s
sysbench --test=fileio --file-num=100 --file-total-size=100G
--file-block-size=16384 --num-threads=4 --file-test-mode=rndwr
run
利用100个文件,总共100G,每个文件1G,4个线程,每个文件块大小16K,测试随机写。
在DRBD机器执行消耗时间:
24.1317s
在硬盘执行消耗时间:
20.5762s
注:上面只写出了随机IO的写操作测试结果,对随机IO的读和顺序IO的读写也测试了一下,表现和上面表现差不多。
四.
利用dd,hdpram命令测试结果显示如下:
1.没有做DRBD时:
利用hdparm测试硬盘速度:
[root@localhost jackbillow]# hdparm -Tt /dev/sda7
/dev/sda7:
Timing cached
reads: 11436 MB
in 2.00 seconds = 5726.02 MB/sec
Timing buffered disk reads: 1120 MB in 3.00 seconds = 373.32 MB/sec
利用dd测试硬盘速度:
[root@localhost jackbillow]# time dd of=aaa if=/dev/zero
count=10240000
10240000+0 records in
10240000+0 records out
5242880000 bytes (5.2 GB) copied, 52.8158 seconds, 99.3 MB/s
real 0m52.951s
user 0m2.475s
sys 0m32.107s
2.部署了DRBD时:
利用hdparm测试硬盘速度:
[root@localhost jackbillow]# hdparm -Tt /dev/drbd0
/dev/drbd0:
Timing cached
reads: 11500 MB
in 2.00 seconds = 5757.92 MB/sec
HDIO_DRIVE_CMD(null) (wait for flush complete) failed:
Inappropriate ioctl for device
Timing buffered disk reads: 1120 MB in 3.00 seconds = 372.94 MB/sec
HDIO_DRIVE_CMD(null) (wait for flush complete) failed:
Inappropriate ioctl for device
利用dd测试硬盘速度:
[root@localhost jackbillow]# time dd of=aaa if=/dev/zero
count=10240000
10240000+0 records in
10240000+0 records out
5242880000 bytes (5.2 GB) copied, 38.4402 seconds, 136 MB/s
real 0m38.448s
user 0m2.526s
sys 0m35.319s
五.
初始化时速度最高能达到200M/s,详细信息如下:
[root@localhost ~]# cat /proc/drbd
version: 8.3.2 (api:88/proto:86-90)
GIT-hash: dd7985327f146f33b86d4bff5ca8c94234ce840e build by
mockbuild@v20z-x86-64.home.local,
2009-08-29 14:07:55
0: cs:SyncSource ro:Primary/Secondary
ds:UpToDate/Inconsistent C r----
ns:39072404
nr:0 dw:0 dr:39080032 al:0 bm:2383 lo:10 pe:12 ua:248 ap:0 ep:1
wo:b oos:509475156
[>....................] sync'ed: 3.3% (497532/514352)M
finish: 0:40:26 speed: 209,600 (114,064) K/sec
[root@localhost data0]# cat /proc/drbd
version: 8.3.2 (api:88/proto:86-90)
GIT-hash: dd7985327f146f33b86d4bff5ca8c94234ce840e build by
mockbuild@v20z-x86-64.home.local,
2009-08-29 14:07:55
0: cs:SyncSource ro:Primary/Secondary
ds:UpToDate/Inconsistent C r----
ns:111762420
nr:0 dw:8742152 dr:103028648 al:6895 bm:6334 lo:1 pe:11 ua:246 ap:0
ep:1 wo:b oos:437769472
[==>.................] sync'ed: 16.9%
(427508/514352)M
finish: 0:33:39 speed: 216,408 (106,884) K/sec
version: 8.3.2 (api:88/proto:86-90)
GIT-hash: dd7985327f146f33b86d4bff5ca8c94234ce840e build by
mockbuild@v20z-x86-64.home.local,
2009-08-29 14:07:55
0: cs:SyncSource ro:Primary/Secondary
ds:UpToDate/Inconsistent C r----
ns:194591000
nr:0 dw:8742152 dr:185856824 al:6895 bm:11470 lo:20 pe:7 ua:252
ap:0 ep:1 wo:b oos:354940752
[=====>..............] sync'ed: 32.7%
(346620/514352)M
finish: 0:26:59 speed: 218,936 (109,960) K/sec
六.
write近30G的文件,花费时间大约4分钟,能达到120M/S,iowait大约8-18之间,负载大约2左右:
[root@db38 jackbillow]# time dd of=aaa if=/dev/zero
count=52400000
52400000+0 records in
52400000+0 records out
26828800000 bytes (27 GB) copied, 223.127 seconds, 120 MB/s
real 3m43.226s
user 0m12.916s
sys 3m7.123s
10.71.20.38:
12:27:07 PM CPU %user %nice %sys
%iowait %irq %soft %steal %idle intr/s
12:27:08 PM all 0.75 0.00 17.46 16.08 1.25 2.49 0.00 61.97 20398.02
12:27:09 PM all 0.87 0.00 17.23 10.99 1.12 2.87 0.00 66.92 20371.29
12:27:10 PM all 0.62 0.00 17.60 17.60 1.37 2.87 0.00 59.93 20082.00
12:27:11 PM all 0.75 0.00 17.25 10.00 1.38 3.25 0.00 67.38 21685.86
12:27:12 PM all 0.87 0.00 16.60 14.86 1.50 3.25 0.00 62.92 20861.00
12:27:13 PM all 0.75 0.00 16.85 9.74 1.25 2.87 0.00 68.54 20162.00
12:27:14 PM all 0.75 0.00 16.90 9.01 1.38 2.50 0.00 69.46 20828.00
12:27:15 PM all 0.87 0.00 17.21 9.85 1.25 2.87 0.00 67.96 20808.00
12:27:16 PM all 0.62 0.00 17.23 10.36 1.12 3.00 0.00 67.67 20282.18
12:27:17 PM all 0.87 0.00 17.48 16.23 1.37 2.62