Linux磁盘或者其他类型服务器压力测试的几款工具简介

标签: linux 磁盘 类型 | 发表时间:2013-01-04 23:18 | 作者:linwaterbin
出处:http://blog.csdn.net

       ㈠ dd:从一个源读取数据然后以比特形式写到另一个目标地址

[root@linwaterbin ~]# dd if=/dev/zero of=/home/oracle/disktest bs=1M count=512 conv=fdatasync


       注释
          if:从哪来
          of:往哪去
          bs:每次读取的数据块大小
          count:读多少个bs
          conv:消除Linux内存缓存的影响,保证数据直接写入磁盘
         
       测试步骤:
       建议运行多次取平均值,并且每次运行前把Linux缓存清理

[root@linwaterbin ~]# echo 3 > /proc/sys/vm/drop_caches
[root@linwaterbin ~]# dd if=/dev/zero of=/home/oracle/disktest bs=1M count=512 conv=fdatasync
512+0 records in
512+0 records out
536870912 bytes (537 MB) copied, 27.4893 seconds, 19.5 MB/s
[root@linwaterbin ~]# 
[root@linwaterbin ~]# 
[root@linwaterbin ~]# 
[root@linwaterbin ~]# echo 3 > /proc/sys/vm/drop_caches
[root@linwaterbin ~]# dd if=/dev/zero of=/home/oracle/disktest bs=1M count=512 conv=fdatasync
512+0 records in
512+0 records out
536870912 bytes (537 MB) copied, 17.3697 seconds, 30.9 MB/s
[root@linwaterbin ~]# 
[root@linwaterbin ~]# 
[root@linwaterbin ~]# 
[root@linwaterbin ~]# 
[root@linwaterbin ~]# echo 3 > /proc/sys/vm/drop_caches
[root@linwaterbin ~]# dd if=/dev/zero of=/home/oracle/disktest bs=1M count=512 conv=fdatasync
512+0 records in
512+0 records out
536870912 bytes (537 MB) copied, 14.9991 seconds, 35.8 MB/s
[root@linwaterbin ~]# 
[root@linwaterbin ~]# 
[root@linwaterbin ~]# 
[root@linwaterbin ~]# echo 3 > /proc/sys/vm/drop_caches
[root@linwaterbin ~]# dd if=/dev/zero of=/home/oracle/disktest bs=1M count=512 conv=fdatasync
512+0 records in
512+0 records out
536870912 bytes (537 MB) copied, 15.2154 seconds, 35.3 MB/s


       19.5 MB/s + 30.9 MB/s + 35.8 MB/s + 35.3 MB/s这几个值相加取平均

       ㈡ hdparm
          有两个参数:
          -t:磁盘性能检测
          -T:内存缓存性能检测
          同样建议多次测试取平均

[root@linwaterbin ~]# hdparm -t /dev/sda

/dev/sda:
 Timing buffered disk reads:  226 MB in  3.02 seconds =  74.82 MB/sec
[root@linwaterbin ~]# hdparm -t /dev/sda

/dev/sda:
 Timing buffered disk reads:  244 MB in  3.10 seconds =  78.59 MB/sec
[root@linwaterbin ~]# hdparm -t /dev/sda

/dev/sda:
 Timing buffered disk reads:  246 MB in  3.12 seconds =  78.87 MB/sec


      以上两个工具,仅仅返回的是读写性能,测试比较简单
     
      使用bonnie++或iozone生成较详细的磁盘报告
      安装之前需先做如下配置

      到 repoforge网站下载对应版本

[root@linwaterbin Desktop]# rpm -ivh --nodeps rpmforge-release-0.5.2-2.el5.rf.i386.rpm 
warning: rpmforge-release-0.5.2-2.el5.rf.i386.rpm: Header V3 DSA signature: NOKEY, key ID 6b8d79e6
Preparing...                ########################################### [100%]
   1:rpmforge-release       ########################################### [100%]
[root@linwaterbin Desktop]# cd /etc/yum.repos.d
[root@linwaterbin yum.repos.d]# ls
base.repo         mirrors-rpmforge-extras   redhat.repo          rpmforge.repo
mirrors-rpmforge  mirrors-rpmforge-testing  rhel-debuginfo.repo


      ㈢ bonnie++
         安装:

[root@linwaterbin yum.repos.d]# yum install -y bonnie++


       首先说明一下命令中常用的参数。
          -d 生成测试文件的路径
          -s 生成测试文件的大小,以M为单位(如果不使用-r参数,则要求文件大小至少是系统物理内存的2倍)
          -m 机器名,实际上我们可以认为是本次测试的方案名,可以随便定义。默认是本机的hostname
          -r 内存大小,指定内存大小,这样可以通过-s参数创建r*2大小的文件,通常用于缩短测试时间
             但是需要注意这样由于内存的cache可能导致测试结果的不准确
          -x 测试的次数
          -u 测试文件的属主和组,默认是执行bonnie++的当前用户和当前组
          -g 测试文件的组,默认是执行bonnie++的当前用组
          -b 在每次写文件时调用fsync()函数,对于测试邮件服务器或者数据库服务器这种通常需要同步操作的情况比较适合,
             而不使用该参数则比较适合测试copy文件或者编译等操作的效率

[root@linwaterbin ~]# bonnie++  -s 512 -r 256 -u root


       主要输出摘入:

Version  1.96       ------Sequential Output------ --Sequential Input- --Random-
Concurrency   1     -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
linwaterbin    512M   217  99 32403  14 13798   7   378  99 49235  10 347.0   3
Latency               154ms    2218ms    2099ms     125ms   63304us    2672ms
Version  1.96       ------Sequential Create------ --------Random Create--------
linwaterbin         -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
                 16 15508  52 +++++ +++ +++++ +++ 27215  91 +++++ +++ +++++ +++
Latency             43819us   20118us   19580us   19834us   19699us   20435us


       ⑴ Sequential Output:写操作
          ① Per Chr:字符
          ② Block:块
       ⑵ Sequential Input:读操作
       ⑶ K/sec:速度(k/秒)
       ⑷ %CP:CPU的使用率
     
      
      ㈣ iozone
         可支持多进程并发测试
         能够输出到excel中进行绘图
         也是日常压力测试用得最多的一款工具
         安装:

[root@linwaterbin ~]# yum install -y iozone


       参数说明:
       -l:最小进程数量
       -u:最大进程数量
       -r:基本读写单位,以测试对象的块大小为准
           如Oracle的块设为8k,则你可以设置为8k
       -s:和bonnie++的s参数含义一致
           这个值如果太小会影响测试结果
           因为很多程序都已经在内存中跑完了
       -f:缓存文件

[root@linwaterbin ~]# iozone -l 1 -u 1 -r 8K -s 128M


        Record Size 8 KB
        File size set to 131072 KB
        Command line used: iozone -l 1 -u 1 -r 8K -s 128M
        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.
        Min process = 1 
        Max process = 1 
        Throughput test with 1 process
        Each process writes a 131072 Kbyte file in 8 Kbyte records

        Children see throughput for  1 initial writers  =  125057.24 KB/sec
        Parent sees throughput for  1 initial writers   =   30640.70 KB/sec
        Min throughput per process                      =  125057.24 KB/sec 
        Max throughput per process                      =  125057.24 KB/sec
        Avg throughput per process                      =  125057.24 KB/sec
        Min xfer                                        =  131072.00 KB

        Children see throughput for  1 rewriters        =  513780.34 KB/sec
        Parent sees throughput for  1 rewriters         =   31989.50 KB/sec
        Min throughput per process                      =  513780.34 KB/sec 
        Max throughput per process                      =  513780.34 KB/sec
        Avg throughput per process                      =  513780.34 KB/sec
        Min xfer                                        =  131072.00 KB

        Children see throughput for  1 readers          =  889758.12 KB/sec
        Parent sees throughput for  1 readers           =  849615.75 KB/sec
        Min throughput per process                      =  889758.12 KB/sec 
        Max throughput per process                      =  889758.12 KB/sec
        Avg throughput per process                      =  889758.12 KB/sec
        Min xfer                                        =  131072.00 KB


       这里的值都很大,是因为我们的s参数设置的有点小

作者:linwaterbin 发表于2013-1-4 23:18:56 原文链接
阅读:0 评论:0 查看评论

相关 [linux 磁盘 类型] 推荐:

Linux磁盘或者其他类型服务器压力测试的几款工具简介

- - CSDN博客推荐文章
       ㈠ dd:从一个源读取数据然后以比特形式写到另一个目标地址.           if:从哪来.           of:往哪去.           bs:每次读取的数据块大小.           count:读多少个bs.           conv:消除Linux内存缓存的影响,保证数据直接写入磁盘.

linux使用FIO测试磁盘的iops

- - 企业架构 - ITeye博客
FIO是测试IOPS的非常好的工具,用来对硬件进行压力测试和验证,支持13种不同的I/O引擎,包括:sync,mmap, libaio, posixaio, SG v3, splice, null, network, syslet, guasi, solarisaio 等等. fio 官网地址: http://freshmeat.net/projects/fio/.

linux用dd测试磁盘速度

- -
linux用dd测试磁盘速度. 首先要了解两个特殊的设备:. /dev/null:回收站、无底洞. /dev/zero:产生字符. 因为/dev//zero是一个伪设备,它只产生空字符流,对它不会产生IO,所以,IO都会集中在of文件中,of文件只用于写,所以这个命令相当于测试磁盘的写能力. 因为/dev/sdb1是一个物理分区,对它的读取会产生IO,/dev/null是伪设备,相当于黑洞,of到该设备不会产生IO,所以,这个命令的IO只发生在/dev/sdb1上,也相当于测试磁盘的读能力.

Linux系统调优:提高磁盘吞吐量

- - 开心平淡对待每一天。热爱生活
          在LINUX系统中,如果有大量读请求,默认的请求队列或许应付不过来,幸好LINUX 可以 动态调整请求队列数,默认的请求队列数存放在 /sys/block/hda/queue/nr_requests 文件中,. 现在我们来测试请求一个1G大小的文件(测试环境为虚拟机):. 由此看出,共花了1分55秒,现在把 nr_requests 的 128 改成 512 再试下:.

【外刊IT评论网】为什么Linux不需要磁盘碎片整理

- - 外刊IT评论网
如果你是个Linux用户,你可能听说过不需要去对你的linux文件系统进行磁盘碎片整理. 也许你注意到了,在Liunx安装发布包里没有磁盘碎片整理的工具. 为了理解为什么Linux文件系统不需要磁盘碎片整——而Windows却需要——你需要理解磁盘碎片产生的原理,以及Linux和Windows文件系统它们之间工作原理的不同之处.

Linux 内存高速缓存(cache)类型分析

- - Linux - 操作系统 - ITeye博客
      在Liunx内存管理机制中,除了对目录项(dentry,Linux文件系统中某个inode的链接)进行缓存外,. 还采取了两种高速缓存,即Buffer Cache和Page Cache,前者针对磁盘块的读写,后者针对文件inode的. 通过增加这些Cache,有效缩短 I/O时间.        先通过free命令查看内存使用情况:.

Javascript 里跑Linux

- rockmaple - Shellex's Blog
牛逼到暴的大拿 Fabrice Bellard,用Javascript实现了一个x86 PC 模拟器,然后成功在这个模拟器里面跑Linux(请用Firefox 4 / Google Chrome 11打开,Chome 12有BUG). 关于这个东西… 伊说 “I did it for fun“,大大啊大大啊….

Linux Ksplice,MySQL and Oracle

- Syn - DBA Notes
Oracle 在 7 月份收购了 Ksplice. 使用了 Ksplice 的 Linux 系统,为 Kernel 打补丁无需重启动,做系统维护的朋友应该明白这是一个杀手级特性. 现在该产品已经合并到 Oracle Linux 中. 目前已经有超过 700 家客户,超过 10 万套系统使用了 Ksplice (不知道国内是否已经有用户了.

linux makefile编写

- hl - C++博客-首页原创精华区
在讲述这个Makefile之前,还是让我们先来粗略地看一看Makefile的规则. target也就是一个目标文件,可以是Object File,也可以是执行文件. prerequisites就是,要生成那个target所需要的文件或是目标. command也就是make需要执行的命令. 这是一个文件的依赖关系,也就是说,target这一个或多个的目标文件依赖于prerequisites中的文件,其生成规则定义在 command中.

Linux下的VDSO

- 圣斌 - Adam's
VDSO(Virtual Dynamically-linked Shared Object)是个很有意思的东西, 它将内核态的调用映射到用户态的地址空间中, 使得调用开销更小, 路径更好.. 开销更小比较容易理解, 那么路径更好指的是什么呢. 拿x86下的系统调用举例, 传统的int 0×80有点慢, Intel和AMD分别实现了sysenter, sysexit和syscall, sysret, 即所谓的快速系统调用指令, 使用它们更快, 但是也带来了兼容性的问题.