儲存裝置(storage) fio performance verify的測試範例

Copy from http://blog.sina.com.tw/william_liao/article.php?entryid=658195

這篇文章主要目的是在提醒,當使用fio在做performance verify的時候,一些事前的準備工作,以及其他要注意的設定事項。

fio (flexible I/O tester)
FIO主要是用來驗證storage的IOPS以及MBps, 它算是在Linux環境底下常用的tool之一, 它也可以用來做壓力測試的驗證 (I/O Stress verify), 目前它有Support 13種不同的I/O engine, 其中包括sync, mmap, libaio, posixaio, SG v3, splice, null, network, syslet, guasi以及solarisaio, 有興趣的讀者們可以用google search到學習網站去了解一下,在這裡我會以ubuntu 14.04以及Windows 7 Professional SP1兩個OS平台做為測試樣本。
這次是以Uptech SC340(順發3C就有在賣了)為測試樣本,這張SATA-III 4-Port hardware RAID HBA,它是PCI-e Gen:2 2x的interface,support HyperDuo(capacity/safe),RAID0,1以及RAID10,IOP採用的是Marvell 88SE9230,並使用ASRock Z68 Extreme4 Gen3來當做測試的platform,以下是本次測試的configuration。

Computer Type ACPI x64-based PC 
amd64 Operating System ubuntu 14.04 (kernel 3.13.0-35-generic #62)
Microsoft Windows 7 Professional Service Pack 1
Motherboard ASRock Z68 Extreme4 Gen3 (3 PCI-E x16,4 DDR3 DIMM) 
CPU Type QuadCore Intel Core i7-3770K, 3700 MHz (37 x 100) 
Northbridge Intel Cougar Point Z68, Intel Ivy Bridge rev.09 
Southbridge Intel Z68 rev. B3 
System Memory 3989 MB  (Kingston DDR3-1333 DDR3 SDRAM) 
BIOS Type AMI (06/29/2012) 
Storage Controller Uptech SC340
Storage Driver Standard AHCI 1.0 Serial ATA Controller (AHCI inbox driver) 
Storage IOP Marvell 88SE9230
SATA3 Devices SSD-OCZ-VERTEX3, and HDD-ST4000NM0033
Test Tool fio 2.1.3-Linux, and fio 2.1.8-Windows

官方網站
http://freecode.com/projects/fio
http://git.kernel.dk/?p=fio.git;a=summary

學習網站
http://linux.die.net/man/1/fio
http://blog.csdn.net/dbadream/article/details/30484631

下載
For Linux RPM http://pkgs.repoforge.org/fio/
                       http://pkgs.fedoraproject.org/repo/pkgs/fio/
For Windows http://www.bluestop.org/fio/

1. 測試前的注意事項
Host/Master端 (主機端-Motherboard)
  ◆ 請不要install其他不必要的軟體或常駐程式。(盡量確保resource的最大值)
  ◆ 淨空PCI-e的slot,只留下待測試的HBA。(也就是說VGA請盡量用on-board的,以避免外在因素的干擾)
  ◆ PCI-e的bandwidth也要注意一下,目前市售的motherboard都有support到Gen:3 16x足以應付市面上的HBA。
  ◆ Memory至少要在4G以上。

Target/Slave端 (設備端-HDD/SSD/RAID devices)
  ◆ 在驗證之前,先confirm原廠的HDD/SSD production data sheet的performance。
  ◆ SATA device也不要接入Enclosure內。(因為direct attach比較不會有外在因素影響)
  ◆ 不要對PD或RAID做任何format的動作。(因為file system還是有cache的存在)
  ◆ 如果測試的Target是with SSD的話,先注意下列動作:
      A. 先將SSD做wipe-out。(erase SSD的block以及其他garbage)
      B. 測試的procedure依序為 Seq.Read → Rdm.Read → Seq.Write → Rdm.Write。(這樣受到SSD的limition也會比較小)
  ◆ 關於RAID的initial:
      A. 針對Non-XOR RAID的話,請不要對RAID做任何initial的動作,因為initial還是會對RAID做Write的動作。
      B. 如果是針對XOR RAID的話,就必須要做initial,以避免I/O在access的時候又要計算Parity。

2. 安裝fio
  ◆ For Linux ubuntu 14.04
Step.1 : 使用ubuntu root權限登入。

fio_Linux_Screenshot from 2014-09-18 00_59_38

Step.2 : 用apt-get指令來安裝fio套件。 (記得網路要通!!)

fio_Linux_Screenshot from 2014-09-18 01_00_37

Step.3 : 用which指令來確認fio的套件已被安裝,並同時確認fio的版本。

fio_Linux_Screenshot from 2014-09-18 01_01_55

  ◆ For Windows 7
 Step.1 : 請依照下列步驟執行安裝。

fio_Windows_install_1

fio_Windows_install_2

fio_Windows_install_3

fio_Windows_install_4

Step.2 : 進入程式集,請確認fio安裝完成與版本的確認。

fio_Windows_install_5

3. 執行測試範例
  ◆ For Linux ubuntu 14.04
fio –ioengine=libaio –prio=0 –numjobs=32 –direct=1 –iodepth=1 –fadvise_hint=0 –runtime=30 –bwavgtime=5000 –time_based –norandommap –rw=read –bs=128k –group_reporting –name=/dev/sdb

fio_Linux_Screenshot from 2014-09-19 00_15_52

  ◆ For Windows 7
Step.1 : 請依照下列步驟執行RAW image create。

fio_Windows_step_1

fio_Windows_step_2

fio_Windows_step_3

Step.2 : 開啟命令提示字元(cmd),在DOS命令行下輸入mountvol指令,並查詢RAW file system的載入點。

fio_Windows_step_4

Step.3 : 請在C:\ create一個text file (在這裡我以檔名fio_test做為範例),鍵入下列的指令並儲存它,請記得要鍵入RAW file system的載入點。

fio_Windows_step_5

Step.4 : 請在C:\ 執行fio c:\fio_text (這個測試手法在Linux環境下,也同樣適用)。

fio_Windows_step_6

底下是我比較常用的指令, 更deatil的command option, 也煩請各位讀者們可以到我提供的學習網站去study一下。

 

–ioengine=libaio Host端所要使用的I/O engine, Linux底下是設為libaio, 在Windows底下是設為windowsaio。
–prio=0 設定job的優先等級(在Linux一共有0~7個level), 0是最高。
–numjobs=32 同時間要測試的IO數, default值為1。(相當於Iometer的Outstanding IO)
–direct=1 直接對physics drive做direct access, default值為1(也就是enable)。
–iodepth=1 IO個數的設定, default值為1。
–fadvise_hint=0 設定fio kernel所要create的IO類型。 (我個人建議這個值設為0也就是disable, 最好是使用ioengine來做驗證, 這樣會比較客觀。)
–runtime=30 測試的時間, 以second(sec)為單位, 若不設定則會依據磁碟掛載點的size或是capacity的值, 一直將size或是capacity的檔案讀/寫完為止。
–time_based 如果置入此參數, 也要執行runtime所設定的時間, 即使所有的size/capacity都已經完全被讀/寫完。
–bwavgtime=5000 設定測試時間的平均值, 以millisecond(ms)為單位。
–norandommap fio在做random IO的時後, 會隨機create一個新的offset。
–rw=read 測試的I/O type, 在這裡只列出我自己常用的四種模式,分別是:read, write, randread, randwrite。
–bs=128k 測試的I/O blocksize(或稱I/O size), 在這裡我以128k為範例。 (default值為4k)
–size=200g 測試的檔案大小為200g, 每次以Seq.Read.128k的I/O(blocksize)來進行測試, 若不設定則會依據磁碟掛載點的capacity, 一直將磁碟的capacity讀/寫完為止。
–group_reporting 以group為單位, 顯示測試的結果。
–name=/dev/sdb 測試端的磁碟掛載點。
–verify=md5 如果是當做I/O stress的burn-in測試,加入這個option可以用來驗證是否有data compare error。(附記: MD5;Message-Digest Algorithm 5,(訊息摘要演算法第五版),是當前電腦領域用於確保資訊傳輸完整一致而廣泛使用的雜湊演算法之一,又譯為雜湊演算法、摘要演算法等,主流程式語言普遍已有MD5的實作。) Reference: http://zh.wikipedia.org/zh-tw/MD5

4. 測試結果
在這裡我個人只會看bw (MBps), iops以及cpu sys值, 來評斷HBA或SATA devices的performance, 在這裡我只列舉出一些簡單的測試結果, 其他的驗證就有勞各位讀者們去試試看。
  ◆ For Linux ubuntu 14.04

fio_Linux_Screenshot from 2014-09-19 00_16_35

  ◆ For Windows 7

fio_Windows_step_7

  ◆ 簡單的測試結果範例。

fio_test_results_sample

發表於 2014/09/19 05:34 PM
Storage儲存領域[] | 回應 [] | 引用[] | 人氣 [] | 推薦 [] |

Measure

Measure

Read more

How to document Home Lab and Network

運維機房和跨域的網路,會遇到各式需求與問題,用對工具才能分析問題,個人覺得最重要的是使用能處理問題的工具。 推薦目前想學和正在使用的平台與軟體,協助將公司/家用機房文件化 佈告欄任務管理 Focalboard 白板可管理任務指派 網路架構文件編寫 netbox 精細管理網路設備與連接線路 IP 資源管理 phpipam 專注網路IP分配 邏輯塊文件編寫 draw.io 視覺化概念圖 機房設備管理 ITDB 管理設備生命週期與使用者

By Phillips Hsieh

如何在Raspberry Pi4上安裝Proxmox for ARM64

第一步 準備好Raspberry Pi 4 / CM4 4GB RAM,這裡要留意CM4如果是買有內建eMMC storage會限制不能使用SD卡開機而限制本地空間容量,如果沒有NAS外接空間或使用USB開機的話,建議買CM4 Lite插上大容量SD卡 第二步 去Armbian官網下載最小化Debian bookworm image https://www.armbian.com/rpi4b/ Armbian 25.2.2 Bookworm Minimal / IOT 然後寫入SD/USB開機碟,寫入方法參考官方文件 https://github.com/raspberrypi/usbboot/blob/master/Readme.md Note: 官方提供的預先設定系統方法,可以在Armbian初次啟動自動化完成系統設定。連結在此 https://docs.armbian.com/User-Guide_Autoconfig/

By Phillips Hsieh

世界越快心越慢

在晚飯後的休息時間,我特別享受在客廳瀏灠youtube上各樣各式創作者的影音作品。很大不同於傳統媒體,節目多是針對大多數族群喜好挑選的,在youtube上我會依心情看無腦的動畫、一些旅拍記錄、新聞時事談論。 尤其在看了大量的Youtube的分享後,我真的感受到會限制我的是我的無知,特別是那些我想都沒想過的實際應用,在學習後大大幫助到我的生活和工作層面。 休息在家時,我喜歡想一些沒做過的菜,動手去設計生活和工作上的解決方案,自己是真的很難閒著沒事做。 如創作文章,陪養新的習慣都能感覺到成長的喜悅,是不同於吃喝玩樂的快樂的。 創作不去限制固定的形式,文字是創作、影像聲音也是創作,記錄生活也是創作,我想留下的就是創造—》實現—》回憶,這樣子的循環過程,在留下的足跡面看到自己一路上的成長、失敗、絕望、重新再來。 雖然大部份的時候去做這些創作也不明白有什麼特別的意義,但不去做也不會留下什麼,所以呀不如反事都去試試看,也許能有不一樣的水花也許有意想不到的結果,投資自己永遠不會是失敗的決定,不是嗎?先問問自己再開始計畫下一步,未來沒人說得準。 像最近看youtube仍大一群人在為DOS開

By Phillips Hsieh

知識管理的三個步驟:一小時學會把知識運用到生活上

摘錄瓦基「閱讀前哨站」文章作為自己學習知識管理的內容 Part1「篩選資訊」 如何從海量資訊中篩選出啟發性、實用性和相關性的精華,讓你在學習過程中不再迷失方向。 1. 實用性 2. 啟發性 Part2「提高理解」 如何通過譬喻法和應用法,將抽象的知識與日常生活和工作緊密結合,建立更深刻的理解。 1. 應用法 2. 譬喻法 Part3「運用知識」 如何連結既有知識,跟自己感興趣的領域和專案產生關聯,讓你在運用知識的路途上游刃有餘。 1. 跟日常工作專案、人際活動產生連結 # 為什麼要寫日記? * 寫日記是為了忘記,忘卻瑣碎事情,保持專注力 * 寫日記就像在翻譯這個世界,訓練自己的解讀能力 * 不只是透過日記來記錄生活,而是透過日記來發展生活 #如何寫日記? * 不要寫流水帳式的日記,而是寫覆盤式的日記 當我們試著記錄活動和感受之間的關聯,有助於辦認出真正快樂的事 日記的記錄方式要以過程為主,而非結果 * 感恩日記的科學建議,每日感恩的案例

By Phillips Hsieh