共用方式為


基準測試磁碟

適用於: ✔️ Linux 虛擬機 ✔️ Windows 虛擬機 ✔️ 彈性擴充集 ✔️ 統一擴充集

效能基準測試是針對您的應用程式模擬不同工作負載,並測量每個工作負載所展示的應用程式效能的過程。 使用 設計高效能一文中所述的步驟,您已收集應用程式效能需求。 藉由在裝載應用程式的 VM 上執行效能評定工具,您可以判斷應用程式可使用進階 SSD 達成的效能等級。 在本文中,我們會提供使用 Azure 進階 SSD 布建Standard_D8ds_v4 VM 的基準檢驗範例。

我們分別針對 Windows 和 Linux 使用 Common Benchmarking Tools DiskSpd 和 FIO。 這些工具繁衍多個線程,以模擬生產環境,例如工作負載,並測量系統效能。 使用工具,您也可以設定像是區塊大小和佇列深度這些通常無法對應用程式變更的參數。 這可讓您更有彈性地針對不同類型的應用程式工作負載,在使用進階 SSD 布建的高規模 VM 上提升效能。 若要深入瞭解每個基準檢驗工具,請造訪 DiskSpdFIO

若要遵循下列範例,請建立Standard_D8ds_v4,並將四個進階 SSD 連結至 VM。 在四個磁碟中,將其中三個的主機快取設定為「無」,並將它們組成一個名為 NoCacheWrites 的磁碟區。 將其餘磁碟上的主機快取設定為 「ReadOnly」,並使用此磁碟建立名為 CacheReads 的磁碟區。 使用此設定,您可以從Standard_D8ds_v4 VM 看到讀取和寫入效能上限。 如需使用高效能 SSD 建立 Standard_D8ds_v4 的詳細步驟,請參閱 設計高效能

預載快取

具有 ReadOnly 主機快取的磁碟能夠提供高於磁碟限制的 IOPS。 若要從主機快取取得最大的讀取效能,您必須先預熱此硬碟的快取。 這可確保基準測試工具將在 CacheReads 卷上驅動的讀取 IOs 需求,實際叫用緩存,而非直接叫用磁碟。 快取叫用會導致已啟用單一快取磁碟的 IOPS 更多。

這很重要

每次 VM 重新啟動時,您必須先將快取熱身後再執行效能評定。

DISKSPD

下載 VM 上的 DISKSP 工具。 DISKSPD 是一種工具,您可以自定義以建立自己的綜合工作負載。 我們將使用相同的設定來執行基準檢驗。 您可以變更規格以測試不同的工作負載。

在此範例中,我們使用下列一組基準參數:

  • -c200G:建立 (或重新建立) 測試中使用的範例檔案。 可以設定為位元組、KiB、MiB、GiB 或區塊。 在此情況下,使用 200-GiB 的大型目標檔案以減少記憶體快取。
  • -w100:指定寫入要求的作業百分比(-w0 相當於讀取 100%)。
  • -b4K:以位元組、KiB、MiB 或 GiB 表示區塊大小。 在此情況下,會使用 4K 區塊大小來模擬隨機 I/O 測試。
  • -F4:設定總共四個線程。
  • -r:表示隨機 I/O 測試(覆寫 -s 參數)。
  • -o128:指出每個線程每個目標未處理的 I/O 要求數目。 這也稱為佇列深度。 在此情況下,128 被用來加載 CPU。
  • -W7200:指定測量開始前熱身時間的持續時間。
  • -d30:指定測試的持續時間,不包括熱身。
  • -Sh:停用軟體和硬體寫入快取 (相當於 -Suw)。

如需參數的完整清單,請參閱 GitHub 存放庫

最大寫入 IOPS

我們使用佇列深度 128、區塊大小為 8 KB,以及四個工作執行緒來驅動寫入作業。 寫入操作正在「NoCacheWrites」磁碟區上產生流量,其中三個磁碟的快取設定為「無」。

執行下列命令,進行 30 秒的熱身和 30 秒的測量:

diskspd -c200G -w100 -b8K -F4 -r -o128 -W30 -d30 -Sh testfile.dat

結果顯示Standard_D8ds_v4 VM 傳遞最大寫入 IOPS 限制為 12,800。

針對3208642560位元組總數,最大 I/O 總數為 391680,總計為 101.97 MiB/秒,每秒總計 13052.65 I/O。

讀取 IOPS 上限

我們使用高佇列深度128、小型區塊大小為4 KB,以及四個工作線程來驅動讀取作業。 讀取工作者正在「CacheReads」磁碟區上產生流量,並將其中一個磁碟的快取設定為“ReadOnly”。

執行下列命令,進行兩個小時的熱身和 30 秒的測量:

diskspd -c200G -b4K -F4 -r -o128 -W7200 -d30 -Sh testfile.dat

結果顯示 Standard_D8ds_v4 VM 達到最大讀取 IOPS 上限為 77,000。

針對總計 9652785152 位元組,總共執行了 2356637 次輸入/輸出操作,總傳輸速率為 306.72 MiB/s,且每秒處理 78521.23 次輸入/輸出。

輸送量上限

若要取得最大讀取和寫入輸送量,您可以將 變更為較大的區塊大小 64 KB。

FIO

FIO 是 Linux VM 上效能評定記憶體的熱門工具。 您可以彈性地選取不同的 IO 大小、循序或隨機讀取和寫入。 它會生成工作線程或進程,以完成指定的 I/O 作業。 您可以使用任務檔案指定每個工作線程必須執行的 I/O 操作類型。 我們為每個案例建立一個作業檔案,如下列範例所示。 您可以變更這些作業檔案中的規格,以對進階記憶體上執行的不同工作負載進行效能評定。 在範例中,我們使用Standard_D8ds_v4執行 Ubuntu。 在執行基準測試之前,請使用基準測試部分一開始提到的相同設置,並預熱快取。

開始之前, 請先下載 FIO ,並將其安裝在虛擬機上。

針對Ubuntu執行下列命令,

apt-get install fio

我們使用四個背景工作線程來驅動寫入作業,以及四個背景工作線程來驅動磁碟上的讀取作業。 寫入工作者正在「nocache」磁碟區上產生流量,其中三個磁碟的快取設定為「無」。 讀取工作者正在「readcache」磁碟區上產生流量,其中一個磁碟的快取設定為 "ReadOnly"。

寫入 IOPS 上限

使用下列規格建立作業檔案,以取得最大寫入 IOPS。 將它命名為 「fiowrite.ini」。

[global]
size=30g
direct=1
iodepth=256
ioengine=libaio
bs=4k
numjobs=4

[writer1]
rw=randwrite
directory=/mnt/nocache

請注意,下列與先前各節所討論之設計指導方針一致的重要事項。 這些規格對於驅動最大 IOPS 至關重要,

  • 佇列深度為 256。
  • 小型區塊大小為 4 KB。
  • 執行隨機寫入的多個線程。

執行下列命令以啟動 FIO 測試 30 秒,

sudo fio --runtime 30 fiowrite.ini

測試執行時,您可以看到 VM 和進階磁碟所傳遞的寫入 IOPS 數目。 如下列範例所示,Standard_D8ds_v4 VM 會傳遞其最大寫入 IOPS 限制 12,800 IOPS。
VM 和高效能 SSD 所提供的寫入 IOPS 數量顯示為 13.1k IOPS。

讀取 IOPS 上限

使用下列規格建立作業檔案,以取得最大讀取 IOPS。 將它命名為 「fioread.ini」。

[global]
size=30g
direct=1
iodepth=256
ioengine=libaio
bs=4k
numjobs=4

[reader1]
rw=randread
directory=/mnt/readcache

請注意,下列與先前各節所討論之設計指導方針一致的重要事項。 這些規格對於驅動最大 IOPS 至關重要,

  • 佇列深度高達 256。
  • 小型區塊大小為 4 KB。
  • 多個執行緒進行隨機寫入。

執行下列命令以啟動 FIO 測試 30 秒,

sudo fio --runtime 30 fioread.ini

當測試執行時,您可以看到 VM 和進階磁碟所傳遞的讀取 IOPS 數目。 如下列範例所示,Standard_D8ds_v4 VM 傳遞超過 77,000 個讀取 IOPS。 這是磁碟和快取效能的組合。
顯示虛擬機器所提供的寫入 IOPS 數量和進階 SSD 數目的螢幕快照,顯示讀取為 78.6k。

讀取和寫入 IOPS 上限

使用下列規格建立作業檔案,以取得最大合併的讀取和寫入 IOPS。 將它命名為 「fioreadwrite.ini」。

[global]
size=30g
direct=1
iodepth=128
ioengine=libaio
bs=4k
numjobs=4

[reader1]
rw=randread
directory=/mnt/readcache

[writer1]
rw=randwrite
directory=/mnt/nocache
rate_iops=3200

請注意,下列與先前各節所討論之設計指導方針一致的重要事項。 這些規格對於驅動最大 IOPS 至關重要,

  • 佇列深度為128。
  • 小型區塊大小為 4 KB。
  • 執行隨機讀取和寫入的多個線程。

執行下列命令以啟動 FIO 測試 30 秒,

sudo fio --runtime 30 fioreadwrite.ini

測試執行時,您可以看到 VM 和進階磁碟所傳遞的合併讀取和寫入 IOPS 數目。 如下列範例所示,Standard_D8ds_v4 VM 提供超過 90,000 個合併的讀取和寫入 IOPS。 這是磁碟和快取效能的組合。
合併的讀取和寫入 IOPS,顯示讀取為 78.3k,而寫入為 12.6k IOPS。

最大合併輸送量

若要取得最大合併的讀取和寫入輸送量,請使用較大的區塊大小和大型佇列深度搭配執行讀取和寫入的多個線程。 您可以使用 64 KB 的區塊大小,以及 128 的佇列深度。

後續步驟

請閱讀我們關於高效能設計的文章。

在該文章中,您會為原型建立類似現有應用程式的檢查清單。 您可以使用效能評定工具來模擬工作負載,並在原型應用程式上測量效能。 如此一來,您就可以判斷哪些磁碟供應專案可以符合或超過您的應用程式效能需求。 然後,您可以為生產應用程式實作相同的指導方針。