(精)Iometer测试方案

来源:互联网 发布:淘宝药店提交需求后 编辑:程序博客网 时间:2024/06/09 13:57

http://benjr.tw/node/113


Iometer

Step 1.下載程式
Step 2.安裝 dynamo(SUT-Linux)
Step 3.安裝 Iometer(Controller-Windows)
Step 4.使用 Iometer
Step 5.不同的 Iometer 參數值
Step 6.看 Iometer 結果
Step 7.Pattern
Step 8.Cycle # Outstanding I/Os
Step 9.錯誤訊息
Step 10.Iometer 測試報告

Step 1.下載程式

第一次接觸 IOmeter 可以先參考這一篇 Iometer quick start 
Iometer 主要可以用來測試硬碟 I/O 的速度,透過不同的 pattern 可以模擬出 Server / Storage 真正在被存取時 I/O 的效能. Iometer 是在 1998年2月17日的 IDF(Intel Develpoer Forum) Intel 所提出來的,但是目前已經移轉到 Open Source 來開發,並且 Iometer 已經在 SourceForge.net 註冊 ,所有的程式都可以從 sourceforge 中下載.http://sourceforge.net/projects/iometer/

先來看看 Iometer  的定義是什麼.官方說明文件( http://iometer.cvs.sourceforge.net/viewvc/iometer/iometer/Docs/Iometer.pdf )如下:

  • Iometer: consists of two programs, Iometer and Dynamo.Iometer is the controlling program. Using Iometer’s graphical user interface, you configure the workload, set operating parameters, and start and stop tests. Iometer tells Dynamo what to do, collects the resulting data, and summarizes the results in output files. Only one copy of Iometer should be running at a time; it is typically run on the server machine.
  • Dynamo: is the workload generator. It has no user interface. At Iometer’s command, Dynamo performs I/O operations and records performance information, then returns the data to Iometer. There can be more than one copy of Dynamo running at a time; typically one copy runs on the server machine and one additional copy runs on each client machine.

簡單的來說就是 Iometer 是由 "控制" 以及 "顯示執行結果" 的兩隻程式所組合而成的.其中 "控制" 就是 Dynamo 主要是產生硬碟壓力測試的程式.不管要測試的平台是 Windows 或是 Linux 都要安裝這兩支程式.但是在 Windows 他會一起把這兩個程式一起帶起來.注意觀察一下執行在 windows 平台時除了 Iometer 的顯示畫面外還有一個 command line 的程式也被帶起來.這就是 Dynamo. 

這裡是專為 Linux 平台講解 Iometer 的工作方式,主要在使用 Iometer for Linux 時需要兩支程式.

  1. iometer-2006_07_27.linux.i386-bin.tgz

    dynamo 主要是安裝在 Linux 下的.也是 iometer 主要在跑的程式.

  2. 2.iometer-2006.07.27.win32.i386-setup.exe

    iometer 只要是安裝在 windows 下的,不負責運行只提供操作介面和顯示執行結果.
    Dynamo 有 windows 和 Linux 版本的但是 Iometer 只有 windows 版.所以在 Linux 平台下還需要額外一台 windows 的 iometer 看執行結果.

目前 iometer 的版本 2008 的是 iometer-devel 的版本, 2006 是 iometer-stable 的版本

Step2.安裝 dynamo(SUT-Linux-IP:10.32.6.205)

基本上解開 iometer-2006_07_27.linux.i386-bin.tgz 就可以使用了.

[root@benjr ~]#tar zxvf iometer-2006_07_27.linux.i386-bin.tgz
[root@benjr ~]# cd iometer-2006_07_27.linux.i386-bin/src
[root@benjr src]# ./dynamo -i iometer_computer_name -m manager_computer_name
ex:
[root@benjr src]#
./dynamo -i 10.32.6.149 -m 10.32.6.205

(i) iometer_computer_name - the name of the computer running Iometer
This is only needed if Dynamo and Iometer are running on different computers.  Without this parameter, Dynamo will search for Iometer on the local host.(就是 Windows 這一台的 IP)

(m) manager_computer_name - the name of the computer running this Dynamo
This name or IP address is the one Iometer will use to communicate with this manager. The default is the IP adress of the host's first NIC.(就是 Linux 那一台的 IP)


基本上 dynamo 這樣執行完成就不需要做任何設定,接下來所有的控置都是透過 Windows Iometer 去設定.如果有用到 dynamo 無法執行時建議你下載 source - iometer-2008-06-22-rc2.src.tgz ,再重新編譯 dynamo.解開後到目錄 #cd ./iometer-2008-06-22.rc2/src 並執行 #make -f Makefile-Linux.x86_64 dynamo 其中的 Makefile-Linux.x86_64 請依據自己的作業系統版本來選擇.重新編譯後的 dynamo 一定可以在你自己的平台上使用

[root@benjr ~]#tar zxvf iometer-2008-06-22-rc2.src.tgz
[root@benjr ~]# cd iometer-2008-06-22.rc2/src
[root@benjr src]# make -f Makefile-Linux.x86_64 dynamo
ex:
[root@benjr src]#
./dynamo -i 10.32.6.149 -m 10.32.6.205

目前最新的版本為 1.1.0-rc1 http://sourceforge.net/projects/iometer/files/iometer-devel/1.1.0-rc1/ 

Step 3.安裝 Iometer(Controller-Windows-IP: 10.32.6.149)

就執行這一支程式就是了 iometer-2006.07.27.win32.i386-setup.exe 步驟就不多加說明.

Step 4.使用 Iometer

在 Windows 環境中點選 start / All programes / Iometer 2006.07.27 / Iometer 開啟 iometer ,不過他同時也會開起 dynamo 這隻程式.

可以看到 benjr.tw 那一個就是 Linux 端的 dynamo.而 GENUINE-9A209BE 是 windows 本機上的 dynamo,跑的方式和 Windows 版的一樣.其中的 Worker 個數是取決於系統上 CPU core 的個數,如果你以前用過 Windows 版的 iometer 你可能會看不懂 Linux 的 Targets 的顯示,一般 windows 顯示 C: D:代表不同的 partition,但是 Linux系統下你會看到 sda(sda1,sda2..) sdb(sdb1,sdb2..)則代表了系統上的第一顆硬碟 (sda )第一個磁區(sda1)以此類推...

目前不管是 SATA 或是 SAS 還是 JBOD / Storage 的硬碟應該都會表示成 sdx .

  1. Topology / Worker#:

    worker 的數量取決於系統上的 CPU 各數,同時每個 worker 可以讓你指定磁碟同時執行的執行緒 thread 數目.一個 worker 執行一個 thread,不過通常我們只會跑一個 worker,只有應用在對一些高性能伺服器或是企業級級的儲存設備才需要增加 Worker 數目,已取得最大的效能值. 

  2. Targets:
    在設定 Disk Target 時會有三種不同圖示來表是不同的硬碟,如下圖所示:
    • 黃色的圖示所代表的是 "logical drive 邏輯磁碟" ,通常在 Windows 下的硬碟多是黃色的圖示.
    • 如果黃色的圖示加上紅色刪除線所代表的是該邏輯磁碟並沒有 iobw.tst 檔案,iometer 在做測試時是透過 iobw.tst 檔案來進行 "寫入/讀取" 的測試.通常是尚未做過 iometer 的硬碟才會有這種圖示.
    • 藍色的圖示是 "原始(RAW)磁碟" 的意思,在 Linux 下通常看到的都是這一類的硬碟.

    有一點要注意的是當你的 iobw.tst 檔案已經建立好,必須刪除 iobw.tst 再去調整設定 Maximum Disk Size / Starting Disk Sector 才會改變 iobw.tst 檔案的大小.

  3. Maximum Disk Size / Starting Disk Sector / # of Outstanding IO:

    一般的硬碟 sector 大小為 512bytes (sector 為硬碟最小儲存單位),如果這邊是使用預設值時,寫入所有該磁碟的所有磁區(Sector),如果你想測是固定大小時可以透過設定 Maximum Disk Size 與 Starting Disk Sector ,
    如果你設定 Maximum Disk Size 為 100 就會寫入資料 100 *512 bytes 大小的資料,而  Starting Disk Sector 可以指定由哪一個 sector 開始寫入.

    要注意的一點是當我們所設定的 "Maximum Disk Size" 大小在記憶體 Buffer 的限制容量以內時,系統會以 Buffer 來當成硬碟,所以跑出來的效能會超高也是這原因.

    至而 # of Outstanding I/O 主要是在模擬測試同時多個應用程式向 I/O 請求讀寫,預設值是 1 .一般是不會是用到這個項目.除非是用在 NAS / SAN 上面.在 "Test Setup / Cycling Options" 選項中 Cycle # Outstanding I/Os 即是以此方式逐步增加同時 I/O 的讀寫,1,2,4,8..預設以2的等比級數增加.

  4. Test Connection Rate:

    這一項不知道是做什麼的.

Step 5.不同的 Iometer 參數值

用不同的 pattern 跑出來的值其結果會相差很大,你可以使用系統中 pattern 來跑或是你也可以 Access Specifications/new 一個屬於自己的 pattern.

主要有三個會影響到測試結果的選項.

  • Transfer Request Size

    Intel 的建議值為 64k,這大小會影響到 Total I/O per Second 的結果.通常愈大直就越小,越小通常值越大.

  • Percent Random/Sequential Distribution

    如果你要得到較高的值當然是選用 100% 的Sequential

  • Percent Read/Write Distribution

    硬碟的讀會比寫要快,所以要得到較高的值選用 100% 的Read

其中的 Default Assignment 主要是我們在 Tool Bar 新增 Disk 或 Network worker 時,預設就會加入這一些 Access Specification. Default Assignment 主要有 4 種

  1. None

    不管新增加的是 disk / network workers 都不會成為預設值.

  2. All Workers

    不管新增加的是 disk / network workers 都會成為預設值.

  3. Disk Workers

    新增加的是 disk workers 會成為預設值.

  4. Network Workers

    新增加的是 network workers 都不會成為預設值.

除了這些設定外,我們還要切換到 Test Setup 頁面設定

  1. Run Time :

    時間.通常跑個 3-5 分鐘即可.

  2. Cycling Options :

    請參考 Iometer 官方網站說明,一般使用預設值即可. http://iometer.cvs.sourceforge.net/*checkout*/iometer/iometer/Docs/Iometer.pdf 

  3. Ramp Up Time:

    一些比較高級的 RAID 系統通常會有一塊 RAM 當作 I/O 快取記憶體的時候,為避免一開始所得到的值是來自於這些快取,系統會將 # Ramp Up Time 所設定的時間不列入計算中.以便得到真正 I/O 的值.


按下就可以開始做 iometer 的測試.

Step 6.看 Iometer 結果

其實跑 Iometer 要經過不同的設定值,最後才能得到一個較好的效能值,這些值要怎麼看,下面有詳細的說明.
Results Since -有兩種

  • Start of Test -

    我們在進行 iometer 時,可能測試時間為一分鐘但每一秒的結果皆不同.這邊會幫我們顯示出從一開始到目前為止所平均出來的值.這值會和儲存下來的 csv 檔結果一致.

  • Last Update -

    顯示的結果為單位時間內的平均值,假如我設的 Update Frequency 為5秒,這邊顯示的就是這5秒的平均值..其實不用管這邊的結果在儲存的 csv 檔就會幫我們記錄其測試結果.

  • Update Frequency(second) -

    這個就容易理解了,當在測試時下面的 Display 的更新頻率,單位為秒(seconds).預設為無限大(infinity),也就是跑完再看結果.

測試結果主要看這兩項.

  • Total I/O per Second -

    每秒 I/O 數的平均值.這和 Access Specifications 設定的 Transfer Request Size 相關.通常愈大直就越小,越小通常值越大.

  • Total MBs per Second -

    每秒可以傳送的資料量,單位為 MBytes.要得到較好的 Total MBs per Second 需要將 Transfer Request Size 設定大一點. 把 Sequential和 Read 設定為 100% .

除了 iometer 可以來測試硬碟的速度,你可以透過 hdparm 這是一個比較簡單的方式來看目前硬碟傳送的速度.

Step 7.Pattern

Iometer 在不同狀況下建議跑的 pattern 值會些許的不同.如下所示!!

  • 最大 I/O (Max IO)處理能力測試:

    硬碟的使用最小單位為 sector 而每個 sector 的大小為 512 Bytes.所以在做最大 I/O (Max IO)處理能力測試時建議使用

  1. Transfer Request Size(傳送資料大小): 512 Bytes.
  2. Percent Read/Write Distribution(讀/寫): 100% 讀
  3. Percent Random/Sequential Distrution(隨機率): Sequential 100%


此時你會得到最大的記錄的IOPS.

  • 最大資料(Max Throughput)吞吐量測試:

    建議使用

    1. Transfer Request Size(傳送資料大小): 64 KByte.
    2. Percent Read/Write Distribution(讀/寫): 100% 讀
    3. Percent Random/Sequential Distrution(隨機率): Sequential 100%


    此時你會得到最大資料(Max Throughput)的吞吐量.

    下面是始於針對特定應用的測試:

  • File Server
    1. Transfer Request Size(傳送資料大小): 64K Byte.
    2. Percent Read/Write Distribution(讀/寫): 讀 80%,寫 20%.
    3. Percent Random/Sequential Distrution(隨機率): Random 100%.
  • Web Server
    1. Transfer Request Size(傳送資料大小): 512K Byte
    2. Percent Read/Write Distribution(讀/寫): 讀 100%
    3. Percent Random/Sequential Distrution(隨機率): Random 100%
  • 線上交易處理(OLTP)
    1. Transfer Request Size(傳送資料大小): 8K Byte.
    2. Percent Read/Write Distribution(讀/寫): 讀 67% ,寫 33%
    3. Percent Random/Sequential Distrution(隨機率): Random 100%

    Step 8.Cycle # Outstanding I/Os

    在 Disk Targets 前面有介紹過 # of Outstanding IO: 主要是在模擬測試同時多個應用程式向 I/O 請求讀寫,預設值是 1 .一般是不會是用到這個項目.除非是用在 NAS / SAN 上面.不過這邊是固定數目的 I/O 請求讀寫,在 "Test Setup / Cycling Options" 選項中 Cycle # Outstanding I/Os 可以用等比(1,2,4,8..預設以2的等比級數增加)或是等差(1,2,4,6,8...預設以2的等差級數增加)方式逐步增加同時 I/O 的讀寫.作用在模擬真實環境當使用使增多時 I/O 讀寫是否會受到影響.可用於 NAS 環境測試.

    Cycle # Outstanding I/Os 有兩種方式.

    • Cycle # Outstanding I/Os -- run step outstanding I/Os on all disks at a time.

      假若我們設定成等差,並將 # of Outstanding I/Os control group / End 設定為 4 ,Iometer 或逐步(1,2,4.預設以2的等差級數增加) 同時 I/O 的讀寫.在這選項中會針對所有的 Disk 同時存取.

    1. All workers use 1 outstanding I/O per target on all selected targets.
    2. All workers use 2 outstanding I/Os per target on all selected targets.
    3. All workers use 4 outstanding I/Os per target on all selected targets.

  • Cycle # Outstanding I/Os and Targets -- run step outstanding I/Os on step targets at a time.


    假若我們設定成等差,並將 # of Outstanding I/Os control group / End 設定為 4 ,Iometer 或逐步(1,2,4.預設以2的等差級數增加) 同時 I/O 的讀寫.在這選項中只會針對單一的 Disk 存取.所以當你指定 Target Disk 為兩顆時需要執行 3*2 =6 次的測試.

  • All workers use 1 outstanding I/O per target on 1 target.
  • All workers use 2 outstanding I/Os per target on 1 target.
  • All workers use 4 outstanding I/Os per target on 1 target.
  • All workers use 1 outstanding I/O per target on 2 targets.
  • All workers use 2 outstanding I/Os per target on 2 targets.
  • All workers use 4 outstanding I/Os per target on 2 targets.

    Step 9.錯誤訊息

    常見的 Iometer 錯誤就是當你的網路環境沒有使用 DNS 造成 Hostname 和 IP 無法相對映上的時候就會看到下面的錯誤訊息!!

    ===> ERROR: Getting host name for "localhost.localdomain" failed.
         [PortTCP::Create() in IOPortTCP.cpp line 238]
         errno = 11
    *** Could not create a TCP/IP Port. exiting.....

    這時只要調整一下

    1. /etc/hosts

      名稱解析以檔案為主時的設定檔

      [root@benjr ~]#vi /etc/hosts
      127.0.0.1 benjr.tw
    2. /etc/sysconfig/network

      暫時的 hostname,下次重開機又會恢復成原值

      [root@benjr ~]#hostname benjr

      設定永久的 hostname,修改成自己所需要的即可.

      [root@benjr ~]#vi /etc/sysconfig/network
      HOSTNAME=benjr

    Step 10.Iometer 測試報告

    測試完 Iometer 會儲存一個預設的檔案 result.csv 檔,雖然我們可以直接在 Iometer 上的 Results Display 看到結果,不過最完整的報告還是可以透過 .csv 轉成 Excel 格式來看會是最清楚的方式.






  • 原创粉丝点击