Linux磁盤或者其餘類型服務器壓力測試的幾款工具簡介

      ㈠ dd:從一個源讀取數據而後以比特形式寫到另外一個目標地址node

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


      註釋
         if:從哪來
         of:往哪去
         bs:每次讀取的數據塊大小
         count:讀多少個bs
         conv:消除Linux內存緩存的影響,保證數據直接寫入磁盤

      測試步驟:
      建議運行屢次取平均值,而且每次運行前把Linux緩存清理
數據庫

  1. [root@linwaterbin ~]# echo 3 > /proc/sys/vm/drop_caches  緩存

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

  3. 512+0 records in併發

  4. 512+0 records outoracle

  5. 536870912 bytes (537 MB) copied, 27.4893 seconds, 19.5 MB/s  dom

  6. [root@linwaterbin ~]#   async

  7. [root@linwaterbin ~]#   ide

  8. [root@linwaterbin ~]#  

  9. [root@linwaterbin ~]# echo 3 > /proc/sys/vm/drop_caches  

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

  11. 512+0 records in

  12. 512+0 records out

  13. 536870912 bytes (537 MB) copied, 17.3697 seconds, 30.9 MB/s  

  14. [root@linwaterbin ~]#  

  15. [root@linwaterbin ~]#  

  16. [root@linwaterbin ~]#  

  17. [root@linwaterbin ~]#  

  18. [root@linwaterbin ~]# echo 3 > /proc/sys/vm/drop_caches  

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

  20. 512+0 records in

  21. 512+0 records out

  22. 536870912 bytes (537 MB) copied, 14.9991 seconds, 35.8 MB/s  

  23. [root@linwaterbin ~]#  

  24. [root@linwaterbin ~]#  

  25. [root@linwaterbin ~]#  

  26. [root@linwaterbin ~]# echo 3 > /proc/sys/vm/drop_caches  

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

  28. 512+0 records in

  29. 512+0 records out

  30. 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:內存緩存性能檢測
         一樣建議屢次測試取平均

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

  2. /dev/sda:  

  3. Timing buffered disk reads:  226 MB in  3.02 seconds =  74.82 MB/sec  

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

  5. /dev/sda:  

  6. Timing buffered disk reads:  244 MB in  3.10 seconds =  78.59 MB/sec  

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

  8. /dev/sda:  

  9. Timing buffered disk reads:  246 MB in  3.12 seconds =  78.87 MB/sec  


     以上兩個工具,僅僅返回的是讀寫性能,測試比較簡單

     使用bonnie++或iozone生成較詳細的磁盤報告
     安裝以前需先作以下配置

     到repoforge網站下載對應版本

  1. [root@linwaterbin Desktop]# rpm -ivh --nodeps rpmforge-release-0.5.2-2.el5.rf.i386.rpm  

  2. warning: rpmforge-release-0.5.2-2.el5.rf.i386.rpm: Header V3 DSA signature: NOKEY, key ID 6b8d79e6  

  3. Preparing...                ########################################### [100%]  

  4.   1:rpmforge-release       ########################################### [100%]  

  5. [root@linwaterbin Desktop]# cd /etc/yum.repos.d  

  6. [root@linwaterbin yum.repos.d]# ls  

  7. base.repo         mirrors-rpmforge-extras   redhat.repo          rpmforge.repo  

  8. mirrors-rpmforge  mirrors-rpmforge-testing  rhel-debuginfo.repo  


     ㈢ bonnie++
        安裝:

  1. [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文件或者編譯等操做的效率

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


      主要輸出摘入:

  1. Version  1.96       ------Sequential Output------ --Sequential Input- --Random-  

  2. Concurrency   1     -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--  

  3. Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP  

  4. linwaterbin    512M   217  99 32403  14 13798   7   378  99 49235  10 347.0   3  

  5. Latency               154ms    2218ms    2099ms     125ms   63304us    2672ms  

  6. Version  1.96       ------Sequential Create------ --------Random Create--------  

  7. linwaterbin         -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--  

  8.              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  

  9.                 16 15508  52 +++++ +++ +++++ +++ 27215  91 +++++ +++ +++++ +++  

  10. Latency             43819us   20118us   19580us   19834us   19699us   20435us  


      ⑴ Sequential Output:寫操做
         ① Per Chr:字符
         ② Block:塊
      ⑵ Sequential Input:讀操做
      ⑶ K/sec:速度(k/秒)
      ⑷ %CP:CPU的使用率


     ㈣ iozone
        可支持多進程併發測試
        可以輸出到excel中進行繪圖
        也是平常壓力測試用得最多的一款工具
        安裝:

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


      參數說明:
      -l:最小進程數量
      -u:最大進程數量
      -r:基本讀寫單位,以測試對象的塊大小爲準
          如Oracle的塊設爲8k,則你能夠設置爲8k
      -s:和bonnie++的s參數含義一致
          這個值若是過小會影響測試結果
          由於不少程序都已經在內存中跑完了
      -f:緩存文件

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

  2.        Record Size 8 KB  

  3.        File size set to 131072 KB  

  4.        Command line used: iozone -l 1 -u 1 -r 8K -s 128M  

  5.        Output is in Kbytes/sec  

  6.        Time Resolution = 0.000001 seconds.  

  7.        Processor cache size set to 1024 Kbytes.  

  8.        Processor cache line size set to 32 bytes.  

  9.        File stride size set to 17 * record size.  

  10.        Min process = 1  

  11.        Max process = 1  

  12.        Throughput test with 1 process  

  13.        Each process writes a 131072 Kbyte file in 8 Kbyte records  

  14.        Children see throughput for  1 initial writers  =  125057.24 KB/sec  

  15.        Parent sees throughput for  1 initial writers   =   30640.70 KB/sec  

  16.        Min throughput per process                      =  125057.24 KB/sec  

  17.        Max throughput per process                      =  125057.24 KB/sec  

  18.        Avg throughput per process                      =  125057.24 KB/sec  

  19.        Min xfer                                        =  131072.00 KB  

  20.        Children see throughput for  1 rewriters        =  513780.34 KB/sec  

  21.        Parent sees throughput for  1 rewriters         =   31989.50 KB/sec  

  22.        Min throughput per process                      =  513780.34 KB/sec  

  23.        Max throughput per process                      =  513780.34 KB/sec  

  24.        Avg throughput per process                      =  513780.34 KB/sec  

  25.        Min xfer                                        =  131072.00 KB  

  26.        Children see throughput for  1 readers          =  889758.12 KB/sec  

  27.        Parent sees throughput for  1 readers           =  849615.75 KB/sec  

  28.        Min throughput per process                      =  889758.12 KB/sec  

  29.        Max throughput per process                      =  889758.12 KB/sec  

  30.        Avg throughput per process                      =  889758.12 KB/sec  

  31.        Min xfer                                        =  131072.00 KB  


      這裏的值都很大,是由於咱們的s參數設置的有點小