- 浏览: 15369 次
- 性别:
- 来自: 北京
最新评论
转载 http://cwind.blog.51cto.com/62582/809284
来想了解一下开发环境的IO性能,分别用dd/orion/iozone/bonnie++四种工具测试了一下
开发环境系统配置如下:
Intel SR1625 server, 2 CPU, 32GB内存, 用主板自带卡做了raid1+0,8个7200转SATA硬盘
操作系统是RHEL 5.3 64位
因为物理内存是32GB,因此整个过程都选用了60GB+的数据量来测试,以避免cache的影响
1. 首先用自带的dd命令先测一下, 块大小为8k
dd只能提供一个大概的测试结果,而且是连续IO而不是随机IO
读测试
# time dd if=/dev/sda2 f=/dev/null bs=8k count=8388608
8388608+0 records in
8388608+0 records out
68719476736 bytes (69 GB) copied, 516.547 seconds, 133 MB/s
real 8m36.926s
user 0m0.117s
sys 0m55.216s
写测试
# time dd if=/dev/zero f=/opt/iotest bs=8k count=8388608
8388608+0 records in
8388608+0 records out
68719476736 bytes (69 GB) copied, 888.398 seconds, 77.4 MB/s
real 14m48.743s
user 0m3.678s
sys 2m47.158s
读写测试
# time dd if=/dev/sda2 f=/opt/iotest bs=8k count=8388608
8388608+0 records in
8388608+0 records out
68719476736 bytes (69 GB) copied, 1869.89 seconds, 36.8 MB/s
real 31m10.343s
user 0m2.613s
sys 3m25.548s
2. 接下来用Oracle的orion工具来测一下
解压即可使用
# gzip orion_linux_x86-64.gz
测异步IO时需要libaio库
# export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib64
# echo $LD_LIBRARY_PATH
:/opt/oracle/product/10.2.0/lib:/usr/lib64
创建配置文件mytest.lun,列出要测试的分区即可. 注意文件名前缀要跟下面的 testname一致
# vi mytest.lun
查看mytest.jun内容
# cat mytest.lun
/dev/sda2
先来个simple test
# ./orion_linux_x86-64 -run simple -testname mytest -num_disks 8
查看测试结果
# cat mytest_20081111_1431_summary.txt
ORION VERSION 11.1.0.7.0
Commandline:
-run simple -testname mytest -num_disks 8
This maps to this test:
Test: mytest
Small IO size: 8 KB
Large IO size: 1024 KB
IO Types: Small Random IOs, Large Random IOs
Simulated Array Type: CONCAT
Write: 0%
Cache Size: Not Entered
Duration for each Data Point: 60 seconds
Small Columns:, 0
Large Columns:, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16
Total Data Points: 38
Name: /dev/sda2 Size: 629143441920
1 FILEs found.
Maximum Large MBPS=56.97 @ Small=0 and Large=7
Maximum Small IOPS=442 @ Small=40 and Large=0
Minimum Small Latency=14.62 @ Small=1 and Large=0
最大MBPS为56.97,最大IOPS为442
再测一下8k随机读操作
# ./orion_linux_x86-64 -run advanced -testname mytest -num_disks 8 -size_small 8 -size_large 8 -type rand &
看看结果
# cat mytest_20081111_1519_summary.txt
ORION VERSION 11.1.0.7.0
Commandline:
-run advanced -testname mytest -num_disks 8 -size_small 8 -size_large 8 -type rand
This maps to this test:
Test: mytest
Small IO size: 8 KB
Large IO size: 8 KB
IO Types: Small Random IOs, Large Random IOs
Simulated Array Type: CONCAT
Write: 0%
Cache Size: Not Entered
Duration for each Data Point: 60 seconds
Small Columns:, 0
Large Columns:, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16
Total Data Points: 38
Name: /dev/sda2 Size: 629143441920
1 FILEs found.
Maximum Large MBPS=3.21 @ Small=0 and Large=13
Maximum Small IOPS=448 @ Small=38 and Large=0
Minimum Small Latency=15.16 @ Small=1 and Large=0
最大MBPS为3.21(这么低??),最大IOPS为448
再测一下1M顺序读操作, 失败了, 原因不明...
# ./orion_linux_x86-64 -run advanced -testname mytest -num_disks 8 -size_small 1024 -size_large 1024 -type seq
ORION: ORacle IO Numbers -- Version 11.1.0.7.0
mytest_20081114_1349
Test will take approximately 73 minutes
Larger caches may take longer
rwbase_run_test: rwbase_reap_req failed
rwbase_run_process: rwbase_run_test failed
rwbase_rwluns: rwbase_run_process failed
orion_warm_cache: Warming cache failed. Continuing
看看结果
# cat mytest_20081111_1620_summary.txt
ORION VERSION 11.1.0.7.0
Commandline:
-run advanced -testname mytest -num_disks 8 -size_small 1024 -size_large 1024 -type seq
This maps to this test:
Test: mytest
Small IO size: 1024 KB
Large IO size: 1024 KB
IO Types: Small Random IOs, Large Sequential Streams
Number of Concurrent IOs Per Stream: 4
Force streams to separate disks: No
Simulated Array Type: CONCAT
Write: 0%
Cache Size: Not Entered
Duration for each Data Point: 60 seconds
没结果,失败
3. 用iozone来测一下
安装
# tar -xvf iozone3_345.tar
# make linux-AMD64
指定64G的文件,只测read/reread和write/rewrite,记录大小从4k-16k.同时生成一个excel文件iozone.wks
# ./iozone -Rab iozone.wks -s64G -i 0 -i 1 -y 4k -q 16k
Iozone: Performance Test of File I/O
Version $Revision: 3.345 $
Compiled for 64 bit mode.
Build: linux-AMD64
Contributors:William Norcott, Don Capps, Isom Crawford, Kirby Collins
Al Slater, Scott Rhine, Mike Wisner, Ken Goss
Steve Landherr, Brad Smith, Mark Kelly, Dr. Alain CYR,
Randy Dunlap, Mark Montague, Dan Million, Gavin Brebner,
Jean-Marc Zucconi, Jeff Blomberg, Benny Halevy, Dave Boone,
Erik Habbinga, Kris Strecker, Walter Wong, Joshua Root,
Fabrice Bacchella, Zhenghua Xue, Qin Li.
Run began: Tue Nov 11 10:23:25 2008
Excel chart generation enabled
Auto Mode
File size set to 67108864 KB
Using Minimum Record Size 4 KB
Using Maximum Record Size 16 KB
Command line used: ./iozone -Rab iozone.wks -s64G -i 0 -i 1 -y 4k -q 16k
Output is in Kbytes/sec
Time Resolution = 0.000001 seconds.
Processor cache size set to 1024 Kbytes.
Processor cache line size set to 32 bytes.
File stride size set to 17 * record size.
random random bkwd record stride
KB reclen write rewrite read reread read write read rewrite read fwrite frewrite fread freread
67108864 4 72882 69470 104898 125512
67108864 8 72083 69256 133689 109061
67108864 16 73375 69155 142019 116034
iozone test complete.
Excel output is below:
"Writer report"
"4" "8" "16"
"67108864" 72882 72083 73375
"Re-writer report"
"4" "8" "16"
"67108864" 69470 69256 69155
"Reader report"
"4" "8" "16"
"67108864" 104898 133689 142019
"Re-Reader report"
"4" "8" "16"
"67108864" 125512 109061 116034
可以看到,8k的写是72M/s左右,读是133M/s左右,跟dd的结果比较接近
测一下64G文件8k随机读写
# ./iozone -Rab iozone.wks -s64G -i 2 -y 8k -q 8k
Iozone: Performance Test of File I/O
Version $Revision: 3.345 $
Compiled for 64 bit mode.
Build: linux-AMD64
Contributors:William Norcott, Don Capps, Isom Crawford, Kirby Collins
Al Slater, Scott Rhine, Mike Wisner, Ken Goss
Steve Landherr, Brad Smith, Mark Kelly, Dr. Alain CYR,
Randy Dunlap, Mark Montague, Dan Million, Gavin Brebner,
Jean-Marc Zucconi, Jeff Blomberg, Benny Halevy, Dave Boone,
Erik Habbinga, Kris Strecker, Walter Wong, Joshua Root,
Fabrice Bacchella, Zhenghua Xue, Qin Li.
Run began: Fri Nov 14 15:52:01 2008
Excel chart generation enabled
Auto Mode
File size set to 67108864 KB
Using Minimum Record Size 8 KB
Using Maximum Record Size 8 KB
Command line used: ./iozone -Rab iozone.wks -s64G -i 2 -y 8k -q 8k
Output is in Kbytes/sec
Time Resolution = 0.000001 seconds.
Processor cache size set to 1024 Kbytes.
Processor cache line size set to 32 bytes.
File stride size set to 17 * record size.
random random bkwd record stride
KB reclen write rewrite read reread read write read rewrite read fwrite frewrite fread freread
67108864 8
Error reading block at 6501007360
read: Success
出错了(??)
4. 最后用bonnie++测一下
安装
# export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib64
# ./configure
# make
# make install
开始测试,默认文件大小是内存的2倍
# bonnie++ -d /opt/IOTest/ -m sva17 -u root
Using uid:0, gid:0.
Writing with putc()...done
Writing intelligently...done
Rewriting...done
Reading with getc()...done
Reading intelligently...done
start 'em...done...done...done...
Create files in sequential order...done.
Stat files in sequential order...done.
Delete files in sequential order...done.
Create files in random order...done.
Stat files in random order...done.
Delete files in random order...done.
Version 1.03e ------Sequential Output------ --Sequential Input- --Random-
-Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
sva17 63G 52391 84 35222 7 34323 6 56362 88 131568 10 176.7 0
------Sequential Create------ --------Random Create--------
-Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
16 +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++
sva17,63G,52391,84,35222,7,34323,6,56362,88,131568,10,176.7,0,16,+++++,+++,+++++,+++,+++++,+++,+++++,+++,+++++,+++,+++++,+++
顺序写: 按字符是52391KB/s,CPU占用率84%;按块是35222KB/s,CPU占用率7%
顺序读: 按字符是56362KB/s, CPU占用率88%;按块是131568KB/s,CPU占用率10%
随机读写: 176.7次/s,CPU占用率0%
后两项全是++ (没结果?)
结论:不同测试工具构建出来的测试环境不同,侧重点也不一样,得到的结果可能相差比较大。
MBPS:
dd和iozone比较接近,读写分别是130+和70+。
orion读57左右,写没测(会删掉分区内所有文件!)
bonnie++按块读是130左右,写是35左右;按字符读是56左右,写是52左右
IOPS:
dd 无结果
orion 440左右(只读)
iozone 出错
bonnie++ 176.7 (读写)
相关推荐
linux下图形界面测试磁盘IO性能的源码,直接编译即可运行
bonnie++ linux测试磁盘IO性能的工具
详解linux下使用IOMETER测试磁盘IO性能.docx详解linux下使用IOMETER测试磁盘IO性能.docx
详解linux下使用IOMETER测试磁盘IO性能.doc
详细讲解linux下使用IOMETER测试磁盘IO性能.doc
详解linux下使用IOMETER测试磁盘IO性能.pdf
所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!Linux系统是一个免费使用和自由传播的类Unix操作系统,基于POSIX和UNIX的多用户、多任务、支持多...
关于linux系统文件/dev/null和/dev/zero文件的详解和/dev/null、/dev/zero文件误删后的修复方法以及服务器磁盘IO测速详解,和一些常见/dev/null /dev/zero文件的用途用法示例说明
解压到linux系统后,shell界面运行以下命令 rpm -ivh --force --nodeps $cur_dir/libibverbs-1.1.8-3.el6.x86_64.rpm rpm -ivh --force --nodeps $cur_dir/fio-2.1.7-1.el6.rf.x86_64.rpm libibverbs-1.1.8-3.el6....
有时候我们在做维护的时候,总会遇到类似于IO特别高,但不能判定是IO瓶颈还是软件参数设置不当导致热盘的问题.这时候通常希望能知道磁盘的读写速度,来进行下一步的决策. 下面是两种测试方法: (1)使用hdparm...
stress是一个linux的压力测试工具,主要用来模拟系统负载较高时的场景,用于对系统的CPU、IO、内存、负载、磁盘等进行压力测试 1、解压stress-1.0.4.tar.gz tar -zxvf /stress-1.0.4.tar.gz 2、切换到解压的...
Linux Source Monitor(CPU、Mem、IO、Net) (linux 系统资源监控库,监控进程占用的CPU、内存、磁盘IO、网络IO)所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一...
linuxI/O调度器详解 及 每种调度器的读写测试
iometer是由intel开发的一个跨平台的磁盘、网络性能分析工具。本压缩包包括使用文档、windows环境下的安装包、linux环境下的安装包和源代码。
磁盘延迟跟踪跟踪所有IO延迟并启用以下功能: 查看所有设备的所有IO,并查看其CDB,检测缓冲区和延迟 在后台监视以上内容,并且仅在发生错误时转储(超时,检测键) 所有这些目的是为了调试与IO相关的罕见问题,并...
如何在Linux中监视IO系统性能,dd其实是工作于比较低层的一个数据拷贝和转换的*nix平台的工具,但是因为dd命令支持*nix平台的一些特殊设备,因此我们可以利用dd命令的这个特性来简单的测试磁盘的性能。dd命令先说...