文件系統性能測試工具iozone


  版權聲明:本文參考了《官方文檔V3.487》未經作者允許,嚴禁用於商業出版,否則追究法律責任。網絡轉載請註明出處,這是對原創者的起碼的尊重!!!


1 簡介

IOzone是一個文件系統benchmark工具。它可以生成並測量各種文件操作。 Iozone已被移植到許多機器上並在許多操作系統下運行。本文檔將介紹許多不同測試類型的操作以及所有命令行選項。

Iozone可用於確定供應商計算機平臺的廣泛文件系統分析。基準測試使用以下操作測試文件系統I/O性能。

  Read, write, re-read, re-write, read backwards, read strided, fread, fwrite, random read/write, pread/pwrite variants, aio_read, aio_write, mmap,

雖然計算機通常在考慮應用程序的情況下購買,但隨着時間的推移,應用程序組合也可能會發生變化。許多供應商已經增強了他們的操作系統,以便在一些常用的應用程上性能更好。雖然這會加速少數應用程序的I/O,但系統可能無法很好地用於其他未被操作系統作爲優化目標的應用程序。此類增強的一個示例是:數據庫。許多操作系統已經測試和調整了文件系統,因此它可以很好地與數據庫配合使用。雖然數據庫用戶很滿意,但其他用戶可能並不高興,因爲整個系統可能以犧牲所有其他用戶爲代價向數據庫用戶提供所有系統資源。隨着時間的推移,系統管理員可能會決定將更多辦公自動化任務轉移到此計算機上。負載現在可以從隨機讀取器應用程序(數據庫)轉移到順序讀取器。用戶可能會發現在運行此新應用程序時機器速度非常慢,並且對購買此平臺的決定感到不滿意。通過使用Iozone獲得廣泛的文件系統性能覆蓋,買家更有可能看到任何優點或缺點,並選擇更平衡的平臺和操作系統。

2 特徵

  • ANSII ‘C’ 源碼.
  • POSIX 異步 I/O
  • mmap() 文件I/O
  • 普通文件I/O
  • 單個流測試
  • 多個流測試
  • POSIX線程
  • 多進程測量
  • 輸出可以在Excel中產生圖像的輸出
  • 繪圖的I/O延遲數據
  • 64位兼容源碼
  • 大文件兼容
  • 在吞吐量測試中設置障礙以消除掉隊的影響。
  • 處理器緩存大小可配置。
  • 可選擇使用fsync,O_SYNC測量。
  • 針對NFS測試的選項。

3 構建

IOzone的源代碼,應該有12個文件

  • iozone.c (源碼)
  • libasync.c (源碼)
  • makefile (makefile)
  • libbif.c (源碼)
  • Iozone_msword_98.doc (Word 格式文檔)
  • iozone.1 (nroff 格式文檔)
  • gnuplot.dem (gnuplot 樣本)
  • gnuplotps.dem (生成postscript輸出的gnuplot示例文件)
  • read_telemetry (讀測試文件的樣本)
  • write_telemetry (寫測試文件的樣本)
  • Run_rules.doc (獲得合理的結果的運行規則)
  • Changes.txt (更新日誌)

鍵入:make

makefile將顯示支持的平臺列表。 選擇與您的配置匹配的那個,然後鍵入:make target。就這樣。 你完成了編譯。 由於IOzone在當前工作目錄中創建了所有文件,因此無需任何安裝過程。 只需將Iozone複製到您希望測試文件系統性能的任何位置,然後運行它。 或者,您可以使用-f命令行選項指定目標路徑,例如,新文件系統中的path/filename文件名。

4 運行示例

最簡單的方法是嘗試自動模式:
  iozone -a

如果您希望生成圖形,那麼您可能希望打開Excel模式
  iozone -Ra (輸出可以使用空格和tab分隔符導入)
  或
  iozone -Rab output.wks (輸出文件”output.wks"是一個二進制格式的電子表格)

如果內存超過512M,則需要將最大文件大小增加到更大的值。例如,如果您的系統有1G的內存,那麼您可能想嘗試以下操作:
  iozone -Ra -g 2G

如果您只關心read/write並且不希望花時間執行所有測試,那麼您可能希望將測試限制爲:
  iozone -Ra -g 2G -i 0 -i 1

如果您在NFS客戶端上通過NFS運行Iozone,那麼您可能希望使用:
  iozone -Rac
這告訴Iozone在測量中引入close()。 如果客戶端運行NFS3上,則可能需要這樣做。引入close()有助於減少NFS3的客戶端緩存效果。如果使用的文件大小大於客戶端中的內存量,則不需要’c’標誌。

5 測試定義

Write:此測試測量寫入新文件的性能。當寫入新文件時,不僅需要存儲數據,而且還需要用於跟蹤數據在存儲介質上的位置的開銷信息。此開銷稱爲“元數據”它由目錄信息,空間分配和與文件關聯的任何其他數據組成,該文件不是文件中包含的數據的一部分。由於此開銷信息,首次寫入性能低於重寫文件的性能是正常的。

Re-Write:此測試測量寫入已存在的文件的性能。當寫入已存在的文件時,由於元數據已存在,所需的工作量較少。重寫性能高於寫入新文件的性能是正常的。

Read:此測試測量讀取現有文件的性能。

Re-Read:此測試測量讀取最近讀取過的文件的性能。由於操作系統通常維護最近讀取的文件的數據緩存,因此性能更高是正常的。此緩存可用於滿足讀取,並提高性能。

Random Read:此測試測量訪問文件中的隨機位置時讀取文件的性能。此類活動下的系統性能可能會受到以下幾個因素的影響:操作系統緩存的大小,磁盤數,搜索延遲等。

Random Write:此測試測量訪問文件中的隨機位置時寫入文件的性能。同樣,此類活動下的系統性能可能會受到以下幾個因素的影響,例如:操作系統緩存的大小,磁盤數量,搜索延遲等。

Random Mix:此測試測量訪問文件中的隨機位置時寫入和讀取文件的性能。同樣,此類活動下的系統性能可能會受到以下幾個因素的影響,例如:操作系統緩存的大小,磁盤數量,搜索延遲等。此測試僅在吞吐量模式下可用。每個線程/進程運行讀取或寫入測試。讀/寫的分配是在循環的基礎上完成的。正確操作需要多個線程/進程。

Backwards Read:此測試測量向後讀取文件的性能。這似乎是一種讀取文件的奇怪方式,但事實上有些應用程序可以執行此操作。 MSC Nastran是一個向後讀取文件的應用程序示例。在MSC Nastran中,這些文件非常大(大小爲GB到TB)。儘管許多操作系統具有使其能夠更快地向前讀取文件的特殊功能,但是很少有操作系統能夠檢測並增強向後讀取文件的性能。

Record Rewrite:此測試測量在文件中寫入和重寫特定位置(熱點)的性能。這個熱點可以有非常有趣的行爲。如果這個熱點的大小足夠小以適應CPU數據緩存,那麼性能非常高。如果熱點的大小大於CPU數據高速緩存但仍然適合TLB,則可以獲得不同的性能級別。如果點的大小大於CPU數據高速緩存並且大於TLB但仍然適合操作系統高速緩存,則可以獲得另一級別的性能,如果該點的大小大於操作系統高速緩存,則獲得了另一個級別的表現。

Strided Read:此測試測量具有跨步訪問行爲的讀取文件性能。例如:在偏移零處讀取4 KB的長度,然後seek到200 KB處,然後讀取4 KB的長度,然後seek到200 KB,依此類推。這裏的模式是讀取4 KB然後seek 200 KB並重復該模式。這又是一種典型的應用程序行爲,這些程序具有包含在文件中的數據結構,並且正在訪問數據結構的特定區域。大多數操作系統都不會檢測此行爲或實現任何技術來增強此類訪問行爲下的性能。此訪問行爲有時也會產生有趣的性能異常。一個例子是應用程序的步幅導致條帶文件系統中的特定磁盤成爲瓶頸。

Fwrite:此測試使用庫函數fwrite()測量寫入文件的性能。 這是一個執行緩衝寫操作的庫例程。 緩衝區位於用戶的地址空間內。 如果應用程序要以非常小的大小傳輸進行寫入,那麼fwrite()的緩衝和阻塞I / O功能可以通過減少實際操作系統調用的數量和在操作系統調用時增加傳輸的大小來增強應用程序的性能。 此測試寫入新文件,因此元數據的開銷再次包含在測量中。

Frewrite:此測試使用庫函數fwrite()測量寫入文件的性能。這是一個執行緩衝和阻塞寫操作的庫例程。緩衝區位於用戶的地址空間內。如果應用程序要以非常小的大小傳輸進行寫入,那麼fwrite()的緩衝和阻塞I/O功能可以通過減少實際操作系統調用的數量和在操作系統調用時增加傳輸的大小來增強應用程序的性能。此測試寫入已經存在的文件,因此性能應該更高,因爲不需要元數據操作。

Fread:此測試使用庫函數fread()測量讀取文件的性能。這是一個執行緩衝和阻塞讀取操作的庫例程。緩衝區位於用戶的地址空間內。如果應用程序要讀取非常小的傳輸,那麼fread()的緩衝和阻塞I / O功能可以通過減少實際操作系統調用的數量和在操作系統調用時增加傳輸的大小來增強應用程序的性能打電話。

Freread:此測試與上面的fread相同,只是在此測試中,讀取了最近讀取過的文件。這應該導致更高的性能,因爲操作系統可能在緩存中具有文件數據。

6 專業測試

Mmap:許多操作系統支持使用mmap()將文件映射到用戶的地址空間。一旦這種映射到位,那麼在內存中存儲到該位置將導致數據存入文件。如果應用程序希望將文件視爲一塊內存,則這很方便。一個例子是在內存中有一個數組,它也作爲文件系統中的文件進行維護。 mmap文件的語義與普通文件有些不同。如果存儲到存儲器位置,則不會立即發生實際的文件I / O.使用帶有標誌MS_SYNC的msyc()和MS_ASYNC控制存儲器和文件的一致性。帶MS_SYNC參數的msync()調用會強制將內存內容寫入文件,並在返回應用程序之前等待它存儲。使用標誌MS_ASYNC調用msync()告訴操作系統使用異步機制將內存刷新到存儲器,以便應用程序可以返回執行而無需等待數據寫入存儲。此測試測量使用mmap()機制執行I/O的性能。

異步I/O:許多操作系統支持執行I/O的另一種機制是POSIX異步I/O.該應用程序使用POSIX標準異步I/O接口來完成此任務。示例:aio_write(),aio_read(),aio_error()。此測試測量POSIX異步I/O機制的性能。

7 命令行選項

下面是內置幫助文檔的輸出。每個選項的用途在本手冊的這一節中進行了說明(v3.487)。

iozone [-s filesize_Kb] [-r record_size_Kb ] [-f [path]filename] [-i test] [-E] [-p] [-a] [-A] [-z] [-Z] [-m] [-M] [-t children] [-h] [-o] [-l min_number_procs] [-u max_number_procs] [-v] [-R] [-x] [-d microseconds] [-F path1 path2...] [-V pattern] [-j stride] [-T] [-C] [-B] [-D] [-G] [-I] [-H depth] [-k depth] [-U mount_point] [-S cache_size] [-O] [-K] [-L line_size] [-g max_filesize_Kb] [-n min_filesize_Kb] [-N] [-Q] [-P start_cpu] [-c] [-e] [-b filename] [-J milliseconds] [-X filename] [-Y filename] [-w] [-W] [-y min_recordsize_Kb] [-q max_recordsize_Kb] [-+m filename] [-+n] [-+N] [-+u ] [ -+d ] [-+p percent_read] [-+r] [-+t ] [-+A #] 
選項 描述
-a 使用全自動模式。生成涵蓋所有測試操作的輸出,記錄大小爲4k到16M,文件大小爲64k到512M。
-A 此版本的自動模式提供更多覆蓋範圍,但消耗大量時間。一旦文件大小爲32 MB或更大,-a選項將自動停止使用小於64k的傳輸大小。這節省了時間。 -A選項告訴iozone即使文件大小非常大,您也願意等待並希望的小型傳輸密集覆蓋。注意:Iozone版本3.61中不推薦使用此選項。請改用-az -i 0 -i 1代替
-b filename Iozone將以Excel兼容的結果輸出來創建二進制文件格式文件。
-B 使用mmap()文件。這會導致使用mmap()接口創建和訪問所有正在測量的臨時文件。某些應用程序更喜歡將文件視爲內存數組。這些應用程序mmap()文件然後只使用加載和存儲來訪問數組以執行文件I / O.
-c 在計時計算中包括close()。 僅當您懷疑當前正在測試的操作系統中的close()被破壞時,這纔有用。 它對於NFS3測試也很有用,可以幫助識別nfs3_commit是否運行良好。
-C 顯示吞吐量測試中每個子節點傳輸的字節數。 如果您的操作系統在文件I / O或進程管理中存在任何飢餓問題,則非常有用。
-d # 脫離障礙的微秒延遲。 在吞吐量測試期間,在開始測試之前,所有線程或進程都被強制爲屏障。 通常,所有線程或進程都在同一時刻釋放。 此選項允許在釋放每個進程或線程之間延遲指定時間(以微秒爲單位)。
-D 在mmap文件上使用msync(MS_ASYNC)。這告訴操作系統mmap空間中的所有數據都需要異步寫入磁盤。
-e 在時間計算中包括flush(fsync,fflush)
-E 用於選擇擴展測試。僅適用於某些平臺。使用pread接口。
-f filename 用於指定要測試的臨時文件的文件名。使用unmount選項時,這很有用。在測試之間進行unmount測試時,測試中的臨時文件必須位於可以卸載的目錄中。當Iozone進程在此目錄中運行時,無法卸載當前工作目錄。
-F file1 file2… 指定要在吞吐量測試中使用的每個臨時文件名。名稱的數量應該等於指定的進程或線程的數量。
-g # 設置自動模式的最大文件大小(以千字節爲單位)。
-G 在mmap文件上使用msync(MS_SYNC)。這告訴操作系統mmap空間中的所有數據都需要同步寫入磁盤。
-h 顯示幫助屏幕
-H # 將POSIX異步I/O與#個async操作一起使用。 Iozone將使用POSIX異步I / O和異步緩衝區中的bcopy返回應用程序緩衝區。某些版本的MSC NASTRAN以這種方式執行I/O.應用程序使用此技術,以便可以在庫中執行異步I/O,並且不需要更改應用程序內部模型。
-i# 用於指定要運行的測試。 (0 =write/re-write,1 =read/re-read,2 =random-read/write,3 =read-backwards ,4 =re-write-recorder,5 =stride-read,6 = fwrite / re-fwrite, 7 = fread / Re-fread,8 =random-mix,9 = pwrite / Re-pwrite,10 = pread / Re-pread,11 = pwritev / Re-pwritev,12 = preadv / Repreadv)。總是需要指定0,以便以下任何測試都有一個要測量的文件。 -i#-i#-i#也受支持,因此可以選擇多個測試。
-I 對所有文件操作使用DIRECT I / O. 告訴文件系統所有操作都繞過緩衝區緩存並直接轉到磁盤。 這也將在VxFS上使用VX_DIRECT,在Linux上使用O_DIRECT,在Solaris上使用directio()。
-j # 設置文件訪問的步幅(#表示記錄大小)。 步幅讀取測試將在此步幅中讀取記錄。
-J # 以毫秒爲單位,在每次I / O操作之前執行這麼多毫秒的計算延遲。 另請參閱-X和-Y以瞭解控制計算延遲的其他選項。
-k # 將POSIX異步I/O與#個async操作一起使用(無bcopy)。 Iozone將使用POSIX異步I / O,不會執行任何額外的bcopys。 Iozone使用的緩衝區將直接傳遞給異步I / O系統調用。
-K 在正常測試期間生成一些隨機訪問。
-l# 設置要運行的進程數的下限。運行吞吐量測試時,此選項允許用戶指定要啓動的最少進程數或線程數。此選項應與-u選項一起使用。
-L# 將處理器高速緩存行大小設置爲#個字節。告訴Iozone處理器緩存行大小。這在內部用於幫助加速測試。
-m 告訴Iozone在內部使用多個緩衝區。有些應用程序反覆讀入單個緩衝區。其他程序卻有一系列緩衝區。此選項允許模擬兩種類型的應用程序。 Iozone的默認行爲是重用內部緩衝區。此選項允許覆蓋默認值並使用多個內部緩衝區。
-M Iozone將調用uname()並將字符串放在輸出文件中。
-n# 設置自動模式的最小文件大小(以千字節爲單位)。
-N 以微秒爲單位報告每個操作的結果。
-o 寫文件時被同步寫入磁盤。 (O_SYNC)。 Iozone將使用O_SYNC標誌打開文件。這會強制對文件的所有寫入完全轉到磁盤,然後再返回到基準測試。
-O 以每秒的操作數給出結果。
-p 這會在每次文件操作之前清除處理器緩存。 Iozone將分配另一個內部緩衝區,該緩衝區與同一處理器緩存邊界對齊,並且其大小與處理器緩存相匹配。在開始每個測試之前,它將用零填充此備用緩衝區。這將清除處理器緩存,並允許在沒有處理器緩存而加速情況下查看內存子系統。
-P# 將進程/線程綁定到處理器,從cpu#開始。僅適用於某些平臺。第一個子進程或線程將在指定的處理器上開始。未來的進程或線程將放在下一個處理器上。一旦超過cpus的總數,則將以循環方式放置未來的進程或線程。
-q# 設置自動模式的最大記錄大小(以KB爲單位)。也可以指定-q #k(以KB爲單位的大小)或-q #m(以MB爲單位的大小)或-q #g(以GB爲單位的大小)。請參閱-y以設置最小記錄大小。
-Q 創建偏移/延遲文件。 Iozone將創建延遲與偏移數據文件,可以使用圖形包導入並繪製。這對於查找某些偏移是否具有非常高的延遲非常有用。例如UFS將分配其第一個間接塊的點。從數據中可以看出使用此選項對基於範圍的文件系統的範圍分配的影響。
-r# 用於指定要測試的記錄大小(以KB爲單位)。也可以指定-r #k(以KB爲單位的大小)或-r #m(以MB爲單位的大小)或-r #g(以GB爲單位的大小)。
-R 生成Excel報告。 Iozone將生成Excel兼容的報告到標準輸出。此文件可以使用Microsoft Excel(空格分隔)導入,並用於創建文件系統性能的圖形。注意:3D圖形是面向列的。您需要在繪圖時選擇此選項,因爲Excel中的默認值是面向行的數據。
-s# 用於指定要測試的文件的大小(以KB爲單位)。也可以指定-s #k(以KB爲單位的大小)或-s #m(以MB爲單位的大小)或-s #g(以GB爲單位的大小)。
-S# 指定處理器高速緩存大小(以KB爲單位)。這告訴Iozone處理器緩存的大小。它在內部用於緩衝區對齊和清除功能。
-t# 以吞吐量模式運行Iozone。此選項允許用戶指定在測量期間有多少線程或進程處於活動狀態。
-T 使用POSIX 線程進行吞吐量測試。在具有POSIX線程的平臺上可用。
-u# 設置要運行的進程數的上限。運行吞吐量測試時,此選項允許用戶指定要啓動的最大進程數或線程數。此選項應與-l選項一起使用。
-U mountpoint 在測試期間unmount和remount的掛載點。在開始每個測試之前,Iozone將卸載並重新安裝此掛載點。這可以保證緩衝區緩存不包含任何被測文件。
-v 顯示Iozone的版本。
-V# 指定要寫入臨時文件的模式,並在每個讀取測試中驗證其準確性。
-w 完成使用後,請勿unlink臨時文件。將它們留在文件系統中。
-W 讀取或寫入時鎖定文件。
-X 關掉stone-walling。 Stonewalling是Iozone內部使用的一種技術。它在吞吐量測試期間使用。代碼啓動所有線程或進程,然後在屏障上停止它們。一旦他們準備好開始,那麼他們都會同時被釋放。任何線程或進程完成其工作的那一刻,整個測試就會終止,吞吐量將根據到目前爲止完成的總I / O進行計算。這可確保在所有進程或線程並行運行時進行整個測量。這個標誌允許人們關閉阻礙,看看會發生什麼。
-X filename 使用此文件寫入遙測信息。該文件包含三個信息:字節偏移,傳輸大小,計算延遲(以毫秒爲單位)。如果已經採用了感興趣的應用程序的系統調用跟蹤,則此選項很有用。這允許Iozone複製此特定應用程序生成的I / O操作,併爲此文件行爲提供基準測試結果。 (如果第1列包含#,那麼該行是註釋)
-y# 設置自動模式的最小記錄大小(以千字節爲單位)。也可以指定-y #k(以KB爲單位的大小)或-y #m(以MB爲單位的大小)或-y #g(以GB爲單位的大小)。請參閱-q以設置最大記錄大小。
-Y filename 使用此文件讀取遙測信息。該文件包含三個信息:字節偏移,傳輸大小,計算延遲(以毫秒爲單位)。如果已經採用了感興趣的應用程序的系統調用跟蹤,則此選項很有用。這允許Iozone複製此特定應用程序生成的I / O操作,併爲此文件行爲提供基準測試結果。 (如果第1列包含#,那麼該行是註釋)
-z 與-a一起使用以測試所有可能的記錄大小。通常,Iozone在全自動模式下使用時會忽略對非常大的文件的小記錄大小的測試。此選項強制Iozone在自動測試中也包括小記錄大小。
-Z 啓用混合mmap I / O和文件I / O.
-+m filename 使用此文件獲取客戶端的配置信息以進行集羣測試。該文件包含每個客戶端的一行。每行有三個字段。這些字段以空格分隔。第0列中的#符號是註釋行。第一個字段是客戶端的名稱。第二個字段是客戶端上Iozone將執行的工作目錄的路徑。第三個字段是客戶端上可執行Iozone的路徑。要使用此選項,必須能夠在客戶端上執行命令,而不會受到密碼的質詢。 Iozone將使用“rsh”開始遠程執行。
-+n 沒有選擇重新測試。使用此選項可防止重新測試運行。
-+N 在順序寫入測試之前不截斷或刪除先前的測試文件。僅在上一個命令中使用-w後才能將測試文件留在原位以便重用。此標誌的用途有限,當單個重新測試不夠時,或者爲了在沒有文件截斷或刪除的情況下在順序寫入重新測試時易於控制。
-+u 啓用CPU利用率模式。
-+d 啓用診斷模式。在此模式下,每個字節都經過驗證。如果懷疑I / O子系統損壞,這很方便。
-+p percent_read 設置將執行隨機讀取測試的線程/進程的百分比。僅在吞吐量模式下有效且具有多個進程/線程。
-+r 爲所有I / O測試啓用O_RSYNC和O_SYNC。
-+t 啓用網絡性能測試。需要 -+ m
-+A # 啓用madvise系統調用。 0 =正常,1 =隨機,2 =順序,3 =不需要,4 =需要。用於與激活mmap()文件I / O的選項一起使用。見:-B

8 圖形示例

[外鏈圖片轉存失敗(img-w9pHhmTE-1566544891352)(https://www.github.com/liao20081228/blog/raw/master/圖片/文件系統性能測試工具iozone/1.jpg)]

從上圖中可以清楚地看到緩衝區緩存有助於小於256MB的文件,但之後可以看到實際的磁盤I / O速度。 另請注意,對於16 KB到1Mbyte的文件大小,可以看到處理器緩存效果。

[外鏈圖片轉存失敗(img-vGFzCugQ-1566544891353)(https://www.github.com/liao20081228/blog/raw/master/圖片/文件系統性能測試工具iozone/2.jpg)]

上圖顯示了重新讀取文件的影響。 請注意,處理器緩存現在非常重要,並導致尖峯。 右邊的下一個平緩區是緩衝區緩存,最後超過256MB,文件不再適合緩衝區緩存,可以看到真正的主軸速度。

[外鏈圖片轉存失敗(img-CGeiOzAK-1566544891354)(https://www.github.com/liao20081228/blog/raw/master/圖片/文件系統性能測試工具iozone/3.jpg)]

上圖是通過多次運行Iozone然後繪製結果組合來創建的。 此處的圖表顯示了吞吐量性能與進程和參與文件系統的磁盤數量的關係。 (磁盤條帶化)好消息是,在這個系統上添加磁盤會增加吞吐量。 並非所有平臺都能很好規模。

[外鏈圖片轉存失敗(img-D6Ff4n3h-1566544891354)(https://www.github.com/liao20081228/blog/raw/master/圖片/文件系統性能測試工具iozone/4.jpg)]

上圖顯示了單個流的性能,其中文件大小和請求大小已更改。圖表靠近底部的右下角不是實際數據。 Excel將空單元格顯示爲包含零。使用-a選項執行此運行。如果使用-A選項,則未經測試的區域將進行測試並具有實際值。通常,這不是一個理想的測試區域,因爲以4k傳輸大小寫512MB文件非常耗時。 Iozone中的-a選項告訴Iozone在文件大小爲32MB或更大時停止使用小於64k的傳輸大小。這節省了相當多的時間。注意從圖的中心向下從左上角到右下角的脊。這是請求大小適合處理器緩存的地方。對於小於處理器緩存大小的文件大小,您也可以看到性能的提升。當文件大小和傳輸大小都小於處理器緩存時,它會上升得更高。雖然很有趣,但是你不可能讓應用程序永遠不要寫大於處理器緩存J的文件。但是,有可能讓應用程序嘗試重用緩衝區並保持緩衝區大小小於處理器緩存大小。

[外鏈圖片轉存失敗(img-BhfVO7SF-1566544891355)(https://www.github.com/liao20081228/blog/raw/master/圖片/文件系統性能測試工具iozone/5.jpg)]

上圖是具有一些有趣的“優化”的真實系統的示例。在這裏可以看到有一些文件大小和一些記錄大小的性能非常糟糕。請注意,記錄大小爲128K字節時性能下降。 (異常#1)文件大小爲8 MB或更大時也會出現下降。大於8MB的文件的下降非常有趣,因爲這臺機器有16 GB內存和8GB緩衝區緩存。這是針對特定應用程序進行調優的典型示例。如果可憐的系統管理員安裝了一個喜歡讀取或寫入記錄大小爲128 KB到1 MB的文件的應用程序,他的用戶可能會把他帶回會議。如果系統在購買之前就已被定性,那麼它將永遠不會進入building。

可以產生的另一種圖形是延遲圖。使用-Q選項時,Iozone將生成四個.dat文件。 Rol.dat,wol.dat,rwol.dat和rrol.dat。這些是讀取偏移延遲,寫入偏移延遲,重寫偏移延遲和重讀偏移延遲。可以將這些文件導入Excel,然後繪製圖形。延遲與偏移信息有助於查看文件中是否存在任何具有高延遲的特定偏移。這些高延遲可能由多種原因引起。一個例子是文件大小是否比緩衝區高速緩存大小稍大。第一次寫入文件時,每次傳輸的延遲都會很低。這是因爲寫入進入緩衝區緩存並允許應用程序立即繼續。第二次寫入文件時,延遲將非常高。這是因爲緩衝區緩存現在完全充滿了必須在重用緩衝區之前寫入的髒數據。當文件大於緩衝區緩存時發生這種情況的原因是因爲在重寫情況下,寫的第一個塊將不會在緩衝區緩存中找到塊,並且在使用它之前將強制清除緩衝區。清理將花費時間並且將導致寫入完成的延遲更長。另一個例子是從遠程機器掛載文件系統。延遲圖可以幫助識別通過網絡訪問的文件的高延遲。以下是NFS3文件系統上文件I / O的一些延遲圖。

[外鏈圖片轉存失敗(img-xmMB3tzv-1566544891355)(https://www.github.com/liao20081228/blog/raw/master/圖片/文件系統性能測試工具iozone/6.jpg)]

[外鏈圖片轉存失敗(img-DpLIs2Kq-1566544891356)(https://www.github.com/liao20081228/blog/raw/master/圖片/文件系統性能測試工具iozone/7.jpg)]

[外鏈圖片轉存失敗(img-BcJGAD3r-1566544891356)(https://www.github.com/liao20081228/blog/raw/master/圖片/文件系統性能測試工具iozone/8.jpg)]

[外鏈圖片轉存失敗(img-cWSqthEV-1566544891357)(https://www.github.com/liao20081228/blog/raw/master/圖片/文件系統性能測試工具iozone/9.jpg)]

在re-read延遲圖中,可以清楚地看到NFS3中的客戶端緩存。重讀延遲顯然不是實際進入NFS服務器並返回所獲得的延遲。

9 運行規則

如果希望獲得平臺整個性能範圍的準確結果,則需要確保將要測試的最大文件大小大於緩衝區高速緩存。如果您不知道緩衝區緩存有多大,或者它是否是動態緩衝區緩存,那麼只需將最大文件大小設置爲大於平臺中的總物理內存。一般來說,你應該能夠看到三到四個高原。文件大小適合處理器緩存。文件大小適合緩衝區緩存。文件大小大於緩衝區緩存。如果平臺具有主處理器和輔助處理器緩存,您可能會看到另一個平臺。如果您沒有看到至少3個高原,那麼您可能將最大文件大小設置得太小。 Iozone默認最大文件大小爲512 MB。這通常已足夠,但對於某些非常大的系統,您可能需要使用-g選項來增加最大文件大小。有關詳細信息,請參閱分發包中的文件Run_rules文檔。

爲了使Iozone結果具有可比性,重要的是遵循一些基本規則。我們的想法是,有人應該能夠在此報告中重現相同的結果。以下是規則列表。

對於緩衝區緩存性能比較
對於單流結果,請確保文件大小小於緩衝區高速緩存。對於吞吐量結果,請確保文件的合計大小小於緩衝區高速緩存。對於內部和外部處理器高速緩存,文件大小也必須至少是處理器高速緩存大小的3倍。

對於磁盤性能比較
對於單流結果,請確保文件大小是緩衝區高速緩存大小的3倍。對於吞吐量結果,請確保文件的合計大小是緩衝區高速緩存大小的3倍。

對於自動模式
確保緩衝區緩存小於或等於128MB。基準測試將自動從小文件開始,並增加到512MB。這將確保結果包含緩衝區緩存結果的輸入和輸出。

對於NFS結果
在發佈NFS的結果時,下面描述的系統規範擴展到包括所有網絡組件和負載生成器的完整硬件和軟件。

系統信息披露報告必須包括

  • 系統CPU數量
  • 系統總內存
  • 系統中緩衝區緩存總量
  • 系統磁盤數量
  • 系統磁盤佈局的完整描述
  • CPU類型,時鐘速度,處理器高速緩存大小,外部高速緩存大小
  • 磁盤控制器的類型
  • 磁盤控制器數量
  • 磁盤類型
  • 如果使用條帶化,請包含條帶佈局的完整說明
  • 使用Iozone爲給定結果發出的完整命令行。
  • 用於測試的Iozone的版本號。
  • 操作系統的版本
  • 所用軟件和硬件的可用日期。
  • 正在使用的文件系統的類型。
  • 系統中NVRAM的總量。 (包括磁盤,磁盤控制器)
  • 測試日期。
  • 測試中使用的任何其他硬件。
  • 啓用了-R選項的原始Iozone輸出文件。
  • 在測試開始之前,必須清理(新創建)的文件系統。
  • 最小結果包括以下結果:Read, Write, Re-read, Re-write, Backward read, Strided read, Random read。 mmap,線程和異步I / O的結果是可選的,因爲並非所有供應商都支持Iozone可以測試的所有內容。
  • 用於編譯Iozone的編譯器選項。
  • 用於創建文件系統的選項。
  • 用於掛載文件系統的選項。
  • 應用於系統的所有可調參數的列表。
  • 公司名稱,如果公司發佈了。
  • 運行基準測試的人員姓名及其電子郵件地址。

其他要求

  • 基準不得修改。
  • 您可以使用任何您想要的編譯器選項。
  • 不允許進行任何僅對此基準測試有益的調整。這包括操作系統中的特殊可調參數,或不用於真正的客戶需求的用於增強Iozone結果的任何命令或實用程序,。
  • 在嘗試將數據刷新到磁盤的任何模式下運行Iozone時,數據必須使其保持穩定存儲(穩定存儲定義爲:寫入的數據可在至少一週停電的時間內恢復。)
  • 不允許使用在6個月內無法購買的硬件或軟件。
  • 不允許使用在發佈後至少6個月內不可用的硬件/軟件。
  • 被測系統必須處於多用戶模式,並且所有後臺程序通常都在運行

審查結果
與其他基準測試不同,無需審覈即可接受結果。 有幾個原因導致不需要這樣做。

  • 我們都是紳士和女士,總是專業的。
  • 我們都尊重黃金法則,尊重他人,就像我們希望得到對待一樣。
  • 如果你撒謊或欺騙,你只會抹黑自己和你的公司。
  • 你絕對不會被抓住。 該基準測試是免費公開發布的。 您的客戶在接受機器和付費前將下載該軟件並檢查平臺。
  • 如果貴公司發佈無法複製的虛假結果,可能會被解釋爲虛假廣告。 誰知道,它甚至可能讓你的公司從競爭對手那裏得到很好的訴訟。
  • 一般而言,如果您對結果感到內疚,那麼請不要讓其他人看到。

敵對出版物
在這些狂風暴雨的時代,人們有時會發布關於不真實的產品的負面結果。如果任何公司或產品遭到虛假結果攻擊,公司可以自行運行基準測試併發布正確的結果。可能無法刪除不正確的結果,但會添加新結果。如果發佈衝突仍在繼續,結果頁面的網站管理員將保留從存檔中刪除不準確的惡意結果的權利。如果發生敵對洪水,結果頁面的網站管理員保留阻止繼續濫用的個人/公司的進一步出版物的權利。任何認爲其產品被誹謗的個人/公司可以自由地追究該人/公司的損失。 Iozone網站管理員,作者,網站所有者和朋友不對惡意出版物負責。 Iozone結果網頁就像是互聯網走廊裏的黑板。維護者保留刪除塗鴉的權利,但不對人們可能在其上書寫的內容負責。

網絡規則
如果出版物的意圖具有敵意,結果頁面的網站管理員保留阻止發佈結果的權利。敵意可能有多種形式。發佈已知不準確的結果,試圖使網站過載的出版物氾濫,發佈包含病毒的結果就是一些例子。如果網站管理員認爲其意圖具有敵意性,則該出版物可能會被拒絕。
網站管理員保留控制提交和發佈流程的權利。

10 源代碼可用性

Iozone免費提供。在您的公司購買下一個平臺之前,可以考慮使用它。

11 關於如何製作圖表的附加說明

Iozone將Excel兼容輸的出發送到標準輸出。這可以重定向到文件,然後用Excel處理。 Iozone的正常輸出以及Excel部分位於同一輸出流中。因此,要獲得圖形,需要向下滾動到文件的Excel部分並繪製該部分中的數據。這兒有幾組圖表數據。 “寫報告”就是一個例子。導入文件時,請務必告訴Excel用“分隔符”導入,然後單擊“下一步”,然後單擊“空格分隔”按鈕。要繪製數據圖形,只需突出顯示包含文件大小和記錄大小的區域,然後單擊圖形嚮導。使用的圖表類型是“Surface”。彈出下一個對話框時,您需要選擇“列”。之後,其餘的應該是直截了當的。

撰稿人: http://www.iozone.org
原作者: William D. Norcott. [email protected]
特新和擴展: Don Capps [email protected]


  版權聲明:本文參考了《官方文檔》未經作者允許,嚴禁用於商業出版,否則追究法律責任。網絡轉載請註明出處,這是對原創者的起碼的尊重!!!


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章