Iometer

Loading

目前新的測試硬碟效能建議使用 FIO – https://benjr.tw/34632

Step 1.下載程式

第一次接觸 IOmeter 可以先參考這一篇 Iometer quick start – https://benjr.tw/435.
Iometer 主要可以用來測試硬碟 I/O 的速度,透過不同的 pattern 可以模擬出 Server / Storage 真正在被存取時 I/O 的效能. Iometer 是在 1998年2月17日的 IDF(Intel Developer 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. 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)

iometer10
基本上 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 .
iometer01

  1. Topology / Worker#:
    worker 的數量取決於系統上的 CPU 各數,同時每個 worker 可以讓你指定磁碟同時執行的執行緒 thread 數目.一個 worker 執行一個 thread,不過通常我們只會跑一個 worker,只有應用在對一些高性能伺服器或是企業級級的儲存設備才需要增加 Worker 數目,已取得最大的效能值. 
  2. Targets:
    在設定 Disk Target 時會有三種不同圖示來表是不同的硬碟,如下圖所示:

    • iometer_icon2黃色的圖示所代表的是 "logical drive 邏輯磁碟" ,通常在 Windows 下的硬碟多是黃色的圖示.
    • iometer_icon1如果黃色的圖示加上紅色刪除線所代表的是該邏輯磁碟並沒有 iobw.tst 檔案,iometer 在做測試時是透過 iobw.tst 檔案來進行 "寫入/讀取" 的測試.通常是尚未做過 iometer 的硬碟才會有這種圖示.
    • iometer_icon3藍色的圖示是 "原始(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.
iometer03

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

  • 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 iometer_toolbar01時,預設就會加入這一些 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 的值.

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

Step 6.看 Iometer 結果

其實跑 Iometer 要經過不同的設定值,最後才能得到一個較好的效能值,這些值要怎麼看,下面有詳細的說明.iometer05
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 – https://benjr.tw/450 這是一個比較簡單的方式來看目前硬碟傳送的速度.

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%

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

  • 最大資料(Max Throughput)吞吐量測試:
    建議使用

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

    iometer08
    此時你會得到最大資料(Max Throughput)的吞吐量.
    iometer09
    下面是始於針對特定應用的測試:

  • 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.
    iometer_cycle01
    假若我們設定成等差(Linear Steeping),並將 # of Outstanding I/Os control group / End 設定為 8 ,Iometer 會逐步 1,2,4,6,8 (預設以2的等差級數增加) 同時 I/O 的讀寫.

    假若我們設定成等比 (Exponential steeping),並將 # of Outstanding I/Os control group / End 設定為 8 ,Iometer 會逐步 1,2,4,8 (預設以2的等比級數增加) 同時 I/O 的讀寫.

    如果我們選擇等比 (Exponential steeping),並將 # of Outstanding I/Os control group / End 設定為 8 ,在這選項中會針對所有的 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.
    4. All workers use 8 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.
    iometer_cycle02
    如果我們選擇等比 (Exponential steeping),並將 # of Outstanding I/Os control group / End 設定為 8 在這選項中只會針對單一的 Disk 存取.所以當你指定 Target Disk 為兩顆時需要執行 4*2 =8 次的測試.

    1. All workers use 1 outstanding I/O per target on 1 target.
    2. All workers use 2 outstanding I/Os per target on 1 target.
    3. All workers use 4 outstanding I/Os per target on 1 target.
    4. All workers use 8 outstanding I/Os per target on 1 target.
    5. All workers use 1 outstanding I/O per target on 2 targets.
    6. All workers use 2 outstanding I/Os per target on 2 targets.
    7. All workers use 4 outstanding I/Os per target on 2 targets.
    8. All workers use 8 outstanding I/Os per target on 1 target.

Step 9.錯誤訊息

  • ERROR: Getting host name for “localhost.localdomain” failed
    常見的 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
      
  • make: /usr/bin/g++: Command not found
    在 Ubuntu 14.04 編譯 iometer-1.1.0-rc1 時,出現了 g++: Command not found ,基本上 Ubuntu 已經安裝了 gcc 但 g++ 沒有安裝 (gcc 是 C 語言編譯器, g++ 是 C++ 語言編譯器),安裝完後就可以使用了.

    root@benjr:/home/ben/Desktop/iometer-1.1.0-rc1/src# make -f Makefile-Linux.x86_64 dynamo
    /usr/bin/g++ -O -Wall -D_GNU_SOURCE -DIOMTR_OSFAMILY_UNIX -DIOMTR_OS_LINUX -DIOMTR_CPU_X86_64 -DIOMTR_SETTING_GCC_M64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_REENTRANT -DNOMINMAX -DUSE_NEW_DISCOVERY_MECHANISM -DFORCE_STRUCT_ALIGN -DIOMTR_SETTING_CPU_AFFINITY -c IOGlobals.cpp
    make: /usr/bin/g++: Command not found
    make: *** [IOGlobals.o] Error 127
    
    root@benjr:/home/ben/Desktop/iometer-1.1.0-rc1/src# apt-get install g++
    
    root@benjr:/home/ben/Desktop/iometer-1.1.0-rc1/src# make -f Makefile-Linux.x86_64 dynamo
    
  • stropts.h : No such file or directory
    在 RHEL 6.5 編譯 iometer-1.1.0-rc1 時出現缺少 stropts.h 檔案,查了一下 stropts.h 是 POSIX XSR 的一部分,但 linux 不支援.

    不過解決方式也很簡單,在 /usr/include 目錄下建立一個空的 stropts.h 文件即可.

    [root@benjr iometer-1.1.0-rc1/src]# make -f Makefile-Linux.x86_64 dynamo
    .................
    stropts.h : No such file or directory
    [root@benjr iometer-1.1.0-rc1/src]# touch /usr/include/stropts.h
    [root@benjr iometer-1.1.0-rc1/src]# make -f Makefile-Linux.x86_64 dynamo
    
  • Performance (效能問題)
    這是最近在 Iometer 遇到的問題,當我使用相同的設定但是不同的 Block size 時,卻發生了效能在 Block size 256K 時是最高點,512k, 1M 以上效能卻從最高點降了 50%.後來同事建議重新編譯 dynamo (之前都是直接拿編譯好的 dynamo 來使用) ,神奇的事效能在 512k, 1M 不會突然下降 50%.編譯 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
    
  • disk icon 反灰
    最近在 Windows 下跑 Iometer 發現有磁碟變成反灰,無法讓我選擇,之後透過切割磁區+格式化,才能跑,想一想也奇怪,後來發現只要是 GPT (GUID Partition Table) 的都會反灰,而 MBR (Master Boot Record) 的則不會.

    關於 GPT 與 MBR 請參考 https://benjr.tw/14289

  • error: libaio.h: No such file or directory
    最近使用 RHEL 6.5 時安裝 dynamo 發生 error: libaio.h: No such file or directory,其實就是少 libaio , libaio-dev 兩個套件,安裝完就可以 #make -f Make-xx dynamo 了.

    [root@benjr ~]# sudo apt-get install libaio1 libaio-dev
    

    或是

    [root@benjr ~]# rpm -ivh libaio libaio-dev
    
  • Windows 與 Linux 無法連線
    通常在 linux 端下 #dynamo -i xxx.xxx.xxx.xx -m xxx.x.x.x 指令後,linux 端會顯示連線成功,但是 windows 端的 Iometer 卻會像是當掉 hang 一樣,程式整個不會動.
    通常是 Firewall 防火牆造成的,建議檢查一下 Windows 與 Linux 端的防火牆狀態.

其他錯誤訊息請參考 https://benjr.tw/53049

Step 10.Iometer 測試報告

在 Test Setup 中 Record Results 預設會記錄結果下來 (如果你只是想試試,可以把選項改成為 None,就不會把結果儲存下來了.)
iometer33
測試完 Iometer 會儲存一個預設的檔案 result.csv 檔,雖然我們可以直接在 Iometer 上的 Results Display 看到結果,不過最完整的報告還是可以透過 .csv 轉成 Excel 格式來看會是最清楚的方式.

沒有解決問題,試試搜尋本站其他內容

75 thoughts on “Iometer

  1. 您好,請問,
    windows與linux無法連線,
    當我在linux端下”dynamo -i xxx.xxx.xxx.xx -m xxx.x.x.x”指令後,
    linux端會顯示連線成功,
    但是windows端的iometer卻會當掉,
    我下的是相同版本的iometer在各自windows與linux的環境下做連線動作,
    請問該怎麼排除此問題呢? 謝謝。

  2. Hi 你好,最近在Linux下使用Iometer時,已經透過Windows與Linux系統做連結,但是在執行Iometer時卻還是會出現以下的錯誤訊息:
    ERROR: Send failed
    [PortTCP::SynchSend() in c:\ved\development\opensource\jometer\sf.net\2010_q2_tot\src\ioporttcp.cpp line792]
    errno=10053
    error repeats xxxx time(s)
    Iometer一直無法正常執行,請問是什麼問題呢?謝謝!

  3. 自動引用通知: Fio VS Iometer | Benjr.tw
  4. 請問我下載了iometer1.1.0的版本在Ubuntu12.04上,解壓後下了指令

    root@localhost:/home/root# ./dynamo -i 192.168.20.101 -m 192.168.20.100
    Dynamo version 1.1.0, x86-64, built Mar 25 2014 22:08:27

    Command line parameter(s):
    Looking for Iometer on “192.168.56.101”
    Sending login request…
    icosa
    192.168.56.100 (port 47535)

    接著開windows端的iometer,兩邊都能互ping,但確看不到linux上的東西,看了一下windows的synamo如下:

    Number of processors: 4
    Using performance counter frequency: 1.94865MHz.
    Sending login request…
    user-1

    Successful PortTCP::Connect
    – port name: user-1
    ***If dynamo and iometer hangs here……

    發現跟舊的版本有點差別,舊版的windows的dynamo如下:

    Number of processors: 4
    Processor speed: 2MHz.
    Number of processors: 4
    Processor speed: 2MHz.

    Sending login request…
    user-1
    192.168.20.101
    Successful PortTCP::Connect
    – port name: user-1
    ***If dynamo and iometer hangs here……

    接著會跳出”Iometer 2006.07.27 is not compatible with Dynamo(unknow version number)”的視窗,兩版的dynamo有一個差別是在前面一個有出現windows的ip,一個沒有,不知道這有沒有關聯?

  5. 無法編譯我抓下來的檔案
    你好,我去http://old.nabble.com/iometer-2008-06-22-rc1-td18061440.html
    這個網站抓了iometer-2008-06-22-rc2.linux.x86_64bin這個檔案下來,
    當我解開之後,跑到scr的目錄下並沒有看到有關Makefile-Linux.x86_64的檔案,
    然後我在資料夾內的各個資料夾輸入以下指令

    #make -f Makefile dynamo
    or
    #make make
    or
    #make INSTALL
    

    回應則是make: *** No rule to make target `dynamo’. Stop.

    1. 事實上我只有在 /Docs/Docbook 的目錄下有看到一個
      makefile的文件,而沒有可以選擇編譯的版本,
      而我在2008-06-28.linux.x86_64-bin的這個檔案裡面
      有發現到三個版本的make(Makefile-Linux24 , Makefile-Linux26 , Makefile-test)文件,
      不過我去做make的時候也是無法編譯,我下的指令是

      #make -f Makefile-Linux26 dynamo

      回應則依然是make: *** No rule to make target `dynamo’. Stop.
      而當我下#make -f Makefile-test dynamo的指令時,
      回應則變成makefail-test:l: *** missing separator. stop
      是我make的用法出了錯嗎?
      是否有其他方式編譯呢? 感激不盡

    2. 不好意思,原來是我原先下載的檔案,下載錯檔案了,所以才導致我無法編譯,
      我下載的目錄上有linux是已經編譯好的,而小弟現在已經將dynamo編譯完成了,
      然後去連接window的時候出現了

      以下是小弟copy下來的回應

      [root@localhost src]# ./dynamo -i 100.168.xxx.xxx -m 100.168.xxx.xxx
      Fail to open kstat device file. You can ignore this warning
      unless you are running dynamo on XSCALE CPU.
      
      Command line parameter(s):
      Looking for Iometer on "100.168.xxx.xxx"
      
      Sending login request...
      localhost.localdomain
      100.168.xxx.xxx (port 36448)
      Successful PortTCP::Connect
      - port name: 100.168.xxx.xxx
      

      這樣應該是代表我有連接上了window的iometer才是,可是我window上的iometer卻找不到
      我RHEL這台電腦,然後我使用ctrl+c結束程的時候,window會出現
      GetReceiveResult()failed on dynamo login port!
      請問為什麼會這樣呢? 麻煩大大幫小弟解惑一下,感激不盡

      1. 先看看彼此 ping 的到嗎?
        接下來看防火牆,以及 selinux 的否開啟!

        1. 我用linux去ping windows是可以ping得到的,然後我也將windows的防火牆,
          以及linu的selinu還有防火牆關掉,但仍然連不上,畫面依舊到上次回應的那的部份就停止了,
          後來我將iometer的版本改為iometer-2006_07_27.linux.i386-bin 原先使用這個版本會當機
          的狀況消失了,而且可以連上去了,目前還不是很清楚為啥會連得上去,不過我想我會多換幾個
          版本測試看看,非常感激大大這麼仔細的教學,感激不盡

          1. 如果遇到問題時建議可以先察看 /var/log/messages ,裡面有更多的資訊可供查詢.

    3. I have the same problem. Windows version of 2008.06.22 RC2 version is also OK. Have you post this problem to IOmeter user mailing list?

      1. 最近我也遇到相同的問題,在 RHEL 5 32 位元所編繹出來的 dynamo(iometer-2008-06-22-rc) 似乎無法正確來使用.
        但好像也找不到解答.

  6. 版本為2008_06_28的linux以及win
    我使用的版本是一致的,原先使用不一致的原因是我想確認到底有沒有ping到
    我的LINUX,確認有抓到後我是使用同一時期版本的IOMETER,
    file的指令我也下過了,出現的回應是
    dynamo: ELE 64-bit LSB executable, AMD X86-64 , VERSION 1(SYSV), FOR GNU/LINUX2.6.9………..
    所以的確是LINUX的執行檔,
    我想請問一下,是否需要將下載下來的檔案做編譯的動作呢?
    因為我在src的資料夾下有看到makefile-linux2x的檔案,所以做完以上動作的時候,
    我用make去編譯,結果是出現error,是否我的的動作有問題呢? 感激不盡

    1. 建議你下載 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 一定可以在你自己的平台上使用.

  7. 你好,我在使用iometer上有遇到問題,想請問一下,
    我今天是在linux底下使用iometer是否需要dynamo就可以了?
    還是說依然要安裝iometer呢?而且iometer是exe檔,要如何安裝在
    linux的系統裡呢?

    應為我想測試的部份只有自己本身這台電腦而已,並沒有想測對外連接
    的數據,所以我想應用上因該只需要使用dynamo來填滿我硬碟的傳送頻寬,
    不知道這樣的想法是否有誤?煩請大大指教

    1. IOmeter 官方說明文件如下:
      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.

      Dynamo 有 windows 和 Linux 版本的但是 Iometer 只有 windows 版.

      所以你還需要額外的一台 windows 的 iometer 看執行結果.

      1. XP and RHEL無法連線成功
        非常感謝大大的回答,我另外還有問題想請問,
        我下載了iometer 2006_07_27.linux.i386以及iometer 2006_07_27.win32.i386這兩個iometer
        的程式,然後個別安裝在RHEL跟XP上,然後在RHEL上輸入:
        # ./dynamo -i xxx.xxx.xxx.xxx -m xxx.xxx.xxx.xxx (xxx.xxx.xxx.xxx是我電腦的ip位置,i後面是xp,m後面是RHEL的位置)
        結果當我入完成的時候,我XP上的iometer就當掉了,而且是每次輸入每次程式都會當掉,我原先想是說可能版本老舊有一些bug,所以我換成了
        iometer-2008_06_28.window.32-bin以及iometer-2008_06_28.linux.x86_64-bin這兩個,
        然後依然是在RHEL上輸入:

        # ./dynamo -i xxx.xxx.xxx.xxx -m xxx.xxx.xxx.xxx
        

        可是當我輸入完按下enter的時候,出現了

        bash: ./dynamo: cannot execute binary file

        我想可能是我權限不夠,所以我輸入了:

        chmod +x dynamo

        然後去看 dynamo這個檔案的屬性, -rwxrwxr-x ,所以是可執行檔,
        然後再輸入一次# ./dynamo -i xxx.xxx.xxx.xxx -m xxx.xxx.xxx.xxx
        結果依然是出現 bash: ./dynamo: cannot execute binary file
        我到現在已經將登入者改為 root了,結果還是一樣,
        於是我使用iometer 2006_07_27.linux.i386以及iometer-2008_06_28.window.32-bin搭配
        結果出現版本不相容的問題,所以其實我是有抓到RHEL的,但是卻無法正常連線,
        而新版的iometer卻是無法執行,請問大大是否可以給我一個方向呢?非常感謝

        1. iometer 和 dynamo 兩邊的版本要一致.
          先使用指令 #file 檢查 dynamo 檔案是否為 Linux 的執行檔(#file dynamo).

  8. 你好,
    我现在也在用这个Iometer,不过,我的客户端是Windows Xp,也就是Iometer.exe所在的电脑。
    Dynamo.exe我想用于Windows server 2008(VMwareplayer的虚拟环境),我将Windows Xp上生成的Dynamo.exe复制后,
    存到了Windows server 2008的桌面上,但是,我不知道如何启动Dynamo.exe,像在Linux环境下一样启动Dynamo.exe么。
    我试着做了一下,但是没成功,Windows Xp上的Iometer.exe的画面没有任何显示,要不就是Iometer.exe当机。
    您能告诉我该怎么做么。谢谢

    1. 建議直接下載 IOmeter windows 版的 iometer-1.1.0-rc1-win32.i386-bin.zip 解開之後,直接執行 IOMETER.EXE 即可在 Windows 系統下啟動 IOMETER.EXE 與 DYNAMO.exe

      1. 谢谢您的回复。

        可能是我说的不是很明白。
        我的控制台是Windows XP,客户端是Windows Server 2008 R2 (64bit),也就是说IOMETER.EXE和DYNAMO.exe不在一个电脑内。我该如何用Windows XP的控制台去控制Windows Server 2008 R2 (64bit)的客户端呢。

        1. 在你 Windows Server 2008 R2 (64bit)的客户端執行 DYNAMO.exe 這一支程式,在你的控制台 Windows XP 執行 IOMETER.EXE 即可.

  9. ESX虛擬機下,想做磁盤的性能測試,,Linux的 dynamo連接的時候,windows的iometer就會當機。。。

    [root@gmx-cent5-3-64 src]# ./dynamo -i 10.11.130.111 -m localhost
    Fail to open kstat device file. You can ignore this warning
    unless you are running dynamo on XSCALE CPU.
    
    Command line parameter(s):
    Looking for Iometer on \"10.11.130.111\"
    
    Sending login request...
    gmx-cent5-3-64.growserver.jp
    localhost (port 57054)
    Successful PortTCP::Connect
    - port name: 10.11.130.111
    
    *** If dynamo and iometer hangs here, please make sure
    *** you use a correct -m that
    *** can ping from iometer machine. use IP if need.
    

    在這裏就當了。。。
    各種版本都試過了,,,不行

    求解惑

    1. 目前我用的版本 iometer-2008-06-22 和 iometer-2006_07_27 都不曾遇過這個問題.

  10. 不好意思請問一下
    這在虛擬機器裡面可以跑嗎
    因為我在KVM的QEMU(linux系統)中
    執行./dynamo -i windows的IP -m 虛擬機器的IP
    卻連不上耶 windows這邊都沒反應
    (測實體時有成功!)

    1. 因為不太清楚你的 KVM 所使用的網路架構為何種,是 Virtual network 還是 Shared physical device ,如果你使用的是 Virtual network 他的運作方式雷同 NAT 外部是無法聯結到內部的,請參考 KVM – Network

  11. 關於request size問題
    Hi,您好:
    看了您的大作…想測試一下在Linux下的一些分散式File system的效能…
    但要測試時,出現了這樣的警示視窗..
    the request size does not align with disk sector size for disk /mnt/test_dir[fuse] , Sector Size=131072

    然後問妳要繼續或取消….
    繼續是可以測…但出來數據等感覺怪怪的….
    能提供上述錯誤訊息的意思跟解決方向….

  12. 我想請問一下,Results since有兩個選項,我看到你的介紹是說一個是可以做比較一個是不可以跟以前的測試做比較,
    我想請問,我在設定的時候選擇start of test的選項是指測試的當下就跟以前的資料做比對還是說測試完成之後
    可以做資料的比對呢?
    在測試的時候選擇start of test的測試結果跟選last update的測試結果是相同的嗎?
    若我只是單純想將每一種設定完成的結果記錄下來是選擇哪一種呢?

    1. 在官方網站說明文件裡面說到這兩種顯示結果

      Start of Test:
      Displays the average or sum of the data gathered since the beginning of the test.
      Last Update:
      Displays the statistics collected since the previous update. For example, if the Update Frequency is set at 5 seconds, the values displayed will be the average or sum of the data collected during the last 5 seconds.

      之前我寫的並不是很正確
      Start of Test – 如果你在系統上跑過很多種 pattern 你可以用 Start of Test 來看剛剛所有跑過的 pattern 值平均或是總和.
      Last Update – 光看這一次的結果不和上一次的做比較.

      比較正確的說法應該是.
      Start of Test – 我們在進行 iometer 時,可能測試時間為一分鐘但每一秒的結果皆不同.這邊會幫我們顯示出從一開始到目前為止所平均出來的值.這值會和儲存下來的 csv 檔結果一致.
      Last Update – 顯示的結果為單位時間內的平均值,假如我設的 Update Frequency 為5秒,這邊顯示的就是這5秒的平均值.

      其實不用管這邊的結果在儲存的 csv 檔就會幫我們記錄其測試結果.

      1. 非常感謝您的解說,所以您的意思應該是:
        我想測試硬碟的傳輸速率以及頻寬應該要勾選的是 Last Update然後將Update Frequency 設為無限大,
        等到測試時間到了之後所顯示的結果也等於勾選Start of Test 所得出來的結果是嗎?

        1. 是的,如果要看即時的結果,建議勾選 “Start of Test” ,並將 “Update Frequency” 設為 1 second.

  13. 你好 我可以請問一下 我使用 Iometer 2006.07.27 ,它所儲存的.CSV都是最後的結果 ,我可以把它每秒的值儲存下來嗎??

    1. CSV 檔儲存的都是最後的結果,似乎無法把每秒的結果儲存下來
      你可以試著將測試改為 Cycle # Outstanding I/Os 如 Step 8 ,並將時間縮短.可以儲存到多個 Outstanding 結果.

  14. 還有一個測試上的問題想請教一下,
    我使用IOMETER測試的時候,有時假設我Outstanding I/Os設為64 ,結果頻寬跑出來一個2000MB,
    然後我修改Outstanding I/Os,改為128的時候,測試的頻寬卻突然下降成500MB,請問這是
    IOMETER本身的問題嗎?還是可能是我硬體的問題呢?
    有時候我IOMETER參數設定相同但前一個小時測試的結果跟後一個小時測試的結果會相差好幾倍

    1. # of Outstanding IO 主要是在模擬測試同時多個應用程式向 I/O 請求讀寫,所以有可能會因為值太大反而會引響到硬碟的效能.

      至於測試結果相差太大建議拉長測試時間並取平均值.

      1. 主要模擬許多讀寫同時進行是因為的確有可能發生,所以當我硬碟效能突然下降的時候,
        就表示我選擇的硬碟並不適合同時間做這麼多讀寫的動作嗎?
        還有就是IOMETER的測試結果部分,
        我測試的結果,有時候我反覆測試五六次結果都是相同的(每次五分鐘)
        但待機一陣子之後再測試,測試結果就又會差很多,反覆測試五六次的數據卻也
        無法回到待機前的數據,當然我設定的時間五分鐘可能不夠長,那一般來說要
        設定多久的時間才會穩定呢?因為我在測試的時候看到在跑的數據差不多三分鐘
        就達到穩定狀態了,煩請幫忙解答,非常感謝

        1. 請問你用的 iometer 版本為何? 之前我在使用 iometer-2006_07_27 時也遇到一些怪問題,後來改用 iometer-2008_06_22 情況就有改善了!!

          1. 我使用的版本為 iometer_2008_06_18
            我是按問號直接在iometer看版本

              1. 我的 Dynamo應該是WINDOWS版的,這個檔跟IOMETER檔是一起抓下來的,
                而且附屬檔名為.EXE檔而不是LINUX的附屬檔名

  15. 請問一般來說”8port可以到達6Gbps的速度”這句話是指8顆硬碟共同分享6Gbps還是指
    這個東西的頻寬足以讓8顆硬碟同時跑到6Gbps??
    算的話2800MB*10=28000bps
    28000/600=4.6…..顆硬碟
    這樣算法有問題嗎?

    1. 因為不知道你的系統單顆硬碟還是 SAN 的儲存裝置,這邊以純粹以南橋晶片所接的出來的 SATA 硬碟來做討論.SATA 3.0 的傳輸頻寬大概是 600MBytes.計算方式如下:

      SATA Generation 3( 6 Gbit/s) – (20% overhead – 每八個位元的資料串上用十位元來加以編碼) 4.8 Gbit/s = 600 MByte/s

      所以 600(SATA 3G) / 8(硬碟) = 75Mbytes(單顆 SATA 硬碟的傳輸平均大約也是這個值).

      比較不清楚你所說的 2800MB 是用什麼裝置所測試出來的.

      雖然 SATA 的每一代都以倍數增加 Generation 1(1.5 Gbit/s) ,Generation 2(3 Gbit/s) , Generation 3(6 Gbit/s).,這邊所提昇的是資料傳輸頻寬.

      但單顆硬碟的最大效能還取決在轉速,一般 SATA 硬碟轉速為 7200 rpm.並不會因為 SATA 1.0 , 2.0 ,3.0 而變快.除非使用 RAID 或是 SSD 的儲存裝置.

      1. 我是用磁碟陣列來做測試的,所以速度應該是不會太慢,問題我想主要是出在RAID卡上面吧,
        今天我換了一張RAID卡做測試,頻寬是如我一開始所想的有上去,然後改回原本使用的RAID卡
        則頻寬依然不會增加,目前我還在查看這兩張卡的規格差異,
        解決了頻寬的問題之後,我測試Write 100% (之前是測試Read 100%),結果不但頻寬降到1.XMB連流量也僅剩下165而已,
        我想盡辦法修改設定依然是徒勞無功,請問在做寫入的時候有沒有甚麼程式或是怎樣的狀況會使我寫入的速度變慢呢?

        1. 會你可以嘗試詢問一下 RAID 的廠商或是你 Server 的廠商,有可能是 F.W , Driver …上的問題.

  16. 我測出一個很奇怪的數值,所以想請教一下,我的頻寬今天測出來的數據維2889.XXMB,但我的
    流量卻只有4萬多,但我頻寬測出來為190.XXMBM卻有近13萬,這是為什麼呢?
    理論上頻寬越大流量才有可能更大,為什麼我頻寬突然變這麼大但流量卻變小了?

    我修改的部分只有Outstanding I/Os 的數值而已,
    其餘的設定我是按照一般最大流量的設定,

    1. 更正,不好意思,我是將512Byte修改成64KByte
      而 Outstanding I/Os數值我則是改到8
      Outstanding I/Os為1的時候頻寬為950MByte,
      修改 Outstanding I/Os值的目的主要是想拉高流量,
      我想測試看看硬碟最大流量能夠被我拉得多高,然後看到
      大大對 Outstanding I/Os欄位的介紹,才決定修改這
      個欄位試試看!

      1. 看樣子你測試的應該是 Storage (NAS / SAN), Outstanding I/Os 可以提高一些來做測試.

        1. 我的Storage (NAS / SAN), Outstanding I/Os 原先其實也有調整過,調到4096了,
          不過在測試的時候我發現調到8~32之間流量就會飽和了,不會在上去,
          另外我想請問一下,OS碟的傳輸速度是否會影響到我測試碟的傳輸速度呢?

          1. OS 碟的傳輸速度不至於影響到測試碟的傳輸速度.Iometer 主要是針對 Raw device.

  17. 對於流量以及頻寬的問題
    Total I/O per Second 這個數值所表現出來的是指每秒的IO流量?
    Total MBs per Second 這個數值所表現出來是指頻寬?
    我想請問一下,這兩者的關係是?為什麼在設定上面把傳送的資料大小修改就會由流量變成頻寬呢?
    另外假設我今天使用3Gbps的硬碟測試,我想觀察這顆硬碟的傳送速率,
    我是應該要看頻寬後除以八做換算,那在流量的方面我要怎麼確定我這顆硬碟的流量是符合
    我規格上的流量呢?煩請幫忙解惑!!感恩!!

    1. Q:Total I/O per Second
      Q:Total I/O per Second 這個數值所表現出來的是指每秒的 IO 流量?
      A:是的.

      Q:Total MBs per Second 這個數值所表現出來是指頻寬?
      A:應該是說傳輸量.頻寬就像是高速公路的寬度,但同時能有多少車子(硬碟的傳輸速度)在上面跑又是另外一回事.
      SATA / SAS
      Generation 1(1.5 Gbit/s) – (20% overhead – 每八個位元的資料串上用十位元來加以編碼) 1.2 Gbit/s = 150 MByte/s
      Generation 2( 3 Gbit/s) – (20% overhead – 每八個位元的資料串上用十位元來加以編碼) 2.4 Gbit/s = 300 MByte/s
      Generation 3( 6 Gbit/s) – (20% overhead – 每八個位元的資料串上用十位元來加以編碼) 4.8 Gbit/s = 600 MByte/s

      雖然 SATA 2 可以到達 3Gbit (300MBytes)但單顆硬碟在傳輸量大多只有.
      1.SATA 7200 rpm H.D
      Timing buffered disk reads: 227 MB in 3.02 seconds = 75.21 MB/sec

      2.SAS 1000 rpm H.D
      Timing buffered disk reads: 277 MB in 3.01 seconds = 92.66 MB/sec

      Q:我想請問一下,這兩者的關係是?為什麼在設定上面把傳送的資料大小修改就會由流量變成頻寬呢?
      A:硬碟的最小單位為 sector ,每個 sector 出廠預設為 512 bytes,所以要測出最大的 I/O 量會直接使用 512 bytes 為測試單位,但硬碟最大傳輸量就需要更大的資料大小才可以測試出通常建議是 64kbytes,但都只是建議值.

      Q:另外假設我今天使用3Gbps的硬碟測試,我想觀察這顆硬碟的傳送速率, 我是應該要看頻寬後除以八做換算,那在流量的方面我要怎麼確定我這顆硬碟的流量是符合我規格上的流量呢?
      A:iometer 測試出來的結果都是硬碟的最大傳輸值,並不是匯流排的頻寬.

  18. OLTP相关数据从何处获得?具有权威代表性吗?
    ——
    線上交易處理(OLTP)
    1.Transfer Request Size(傳送資料大小): 8K Byte.
    2.Percent Read/Write Distribution(讀/寫): 讀 67% ,寫 33%
    3.Percent Random/Sequential Distrution(隨機率): Random 100%
    ——-
    OLTP相关数据从何处获得?具有权威代表性吗?谢谢!

    1. web server, file server ,線上交易處理(OLTP) 這些 pattern 是參考了 storagereview.com 的建議值,有興趣可以參考這一篇文章. http://www.storagereview.com/articles/200003/20000313OSandBM_5.html

      我的想法是資料庫的儲存最小單位通常預設為 8K Bytes,而資料在讀寫時,通常讀取會佔較高的比例.當然都一定是100% 的隨機.所以在測試時需要考量到實際的資料庫狀態再做 Access Pattern 的調整.才會得到最佳的效能

  19. 請問文章中的 access pattern 參考自何處
    您好, 想請問一下您文章中的 access pattern 參考自何處
    另外我看一些文章提到 iometer default access pattern 有 web server, file server 等
    但是目前最新版並沒有這些 pattern, 只有 512B, 4K, 16K, 32K 等一些不同 R/W 分布的 pattern

  20. Iometer 1.1.0-rc1
    目前最新的版本為 1.1.0-rc1 http://sourceforge.net/projects/iometer/files/iometer-devel/1.1.0-rc1/ 除了事前已經編譯好的版本外

    iometer-1.1.0-rc1-osx.intel.ppc….dmg
    iometer-1.1.0-rc1-win64.x86_64-….zip
    iometer-1.1.0-rc1-win64.ia64-bi….zip
    iometer-1.1.0-rc1-win32.i386-bi….zip
    iometer-1.1.0-rc1-linux.x86_64-….bz2
    iometer-1.1.0-rc1-linux.i386-bi….bz2
    還有 source 檔可供自行編譯.

    iometer-1.1.0-rc1-src.tar.bz2
    編譯方式與舊版相似.

    [root@benjr ~]# tar jxvf iometer-1.1.0-rc1-linux.x86_64-bin.tar.bz2
    [root@benjr ~]# cd iometer-1.1.0-rc1/src
    [root@benjr src]# make -f Makefile-Linux.x86_64 dynamo
  21. 自動引用通知: hdparm | Benjr.tw

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料