在 Windows VM 上基準化 Persistent Disk 效能

本文說明如何在 Windows 虛擬機器 (VM) 執行個體上,對永久磁碟效能進行基準化測試。如果是 Linux VM,請參閱「在 Linux VM 上評估 Persistent Disk 效能」。

如要評估執行中執行個體所用磁碟的 IOPS 和輸送量,請使用預期設定對檔案系統進行基準測試。使用這個選項測試實際工作負載,同時保留現有磁碟的內容。請注意,在現有磁碟上對檔案系統進行基準測試時,開發環境特有的許多因素可能會影響基準測試結果,而且您可能無法達到磁碟效能限制。

如要評估永久磁碟的原始效能,請直接對區塊裝置進行基準測試。使用這個選項,比較原始磁碟效能與磁碟效能限制。

在 C4 VM 上,Windows 支援每個裝置提交佇列的最大深度為 1024。佇列填滿時,Windows 會停止提交 I/O,直到佇列部分排空為止,這會大幅降低效能。為避免觸發這項條件,建議您將基準測試工作負載限制在每個連接磁碟區的匯總佇列深度 1024。

設定基準測試軟體

如要對 Windows VM 上的 Persistent Disk 效能進行基準測試,請使用 DISKSPD。

  1. 連線至 VM 執行個體。

  2. 開啟 Powershell 並使用下列指令下載 DISKSPD 工具:

    $client = New-Object System.Net.WebClient
    $client.DownloadFile("https://github.com/Microsoft/diskspd/releases/latest/download/DiskSpd.zip","$env:temp\DiskSpd-download.zip")
    Expand-Archive -LiteralPath "$env:temp\DiskSpd-download.zip" C:\DISKSPD
    Get-ChildItem C:\DISKSPD
    

對執行中的 VM 執行個體上的磁碟進行 IOPS 和處理量基準測試

如要測量執行中 VM 執行個體上作用中磁碟的 IOPS 和輸送量,並模擬實際工作負載,請針對現有檔案系統中的新目錄執行基準測試,這樣就不會遺失磁碟內容。

在下列步驟中,假設要測試的磁碟已掛接為 D:,且指令是在具有管理員權限的「命令提示字元」(cmd.exe) 視窗中執行:

  1. 連線至 VM。

  2. 驗證 DISKSPD 軟體設定,並將目錄變更為 64 位元二進位檔:

    cd C:\DISKSPD\amd64
    
  3. 在磁碟上建立名為 DISKTEST.DAT 的 10 GB 新檔案:

    set TESTFILE=D:\DISKTEST.DAT
    diskspd -d0 -c10G %TESTFILE%
    
  4. 使用 1 MB 的 I/O 區塊大小和至少 64 的 I/O 深度,透過多個平行串流 (16 個以上) 執行依序寫入,測試寫入處理量:

    diskspd -d300 -b1M -o64 -Sh -w100 -t16 -si %TESTFILE%
    
  5. 執行隨機寫入作業,並使用 4 KB 的 I/O 區塊大小和至少 256 的 I/O 深度,測試寫入 IOPS:

    diskspd -d300 -b4K -o256 -Sh -w100 -r %TESTFILE%
    
  6. 使用多個平行串流 (16 個以上) 執行循序讀取,測試讀取總處理量,I/O 區塊大小為 1 MB,I/O 深度至少為 64:

    diskspd -d300 -b1M -o64 -Sh -t16 -si %TESTFILE%
    
  7. 執行隨機讀取作業,並使用 4 KB 的 I/O 區塊大小和至少 256 的 I/O 深度,測試讀取 IOPS:

    diskspd -d300 -b4K -o256 -Sh -r %TESTFILE%
    
  8. 清除:

    del %TESTFILE%
    

基準測試原始永久磁碟效能

如要單獨測量開發環境以外的 Persistent Disk 磁碟區效能,請在拋棄式 Persistent Disk 和 VM 上測試區塊裝置的讀寫效能。

  1. 建立並啟動 VM 執行個體。

  2. 將永久磁碟新增至要進行基準測試的 VM 執行個體。

  3. 連線至 VM 執行個體。

  4. 驗證 DISKSPD 軟體設定,並將目錄變更為 64 位元二進位檔:

    cd C:\DISKSPD\amd64
    
  5. 確認磁碟上沒有非保留分區。在提升權限的「命令提示字元」視窗中輸入 diskpart。

    diskpart
    
  6. 列出連接至 VM 的磁碟:

    DISKPART> list disk
    

    輸出內容會顯示新建立的 1 TB 磁碟,在下列輸出內容範例中為 Disk 1:

      Disk ###  Status         Size     Free     Dyn  Gpt
      --------  -------------  -------  -------  ---  ---
      Disk 0    Online          120 GB  1024 KB        *
      Disk 1    Online         1024 GB  1023 GB        *
    
  7. 選取要進行基準測試的磁碟。

    DISKPART> select disk 1
    
  8. 列出所選磁碟上的磁碟分割區。

    DISKPART> list partition
    
       Partition ###  Type              Size       Offset
       -------------  ----------------  --------   -------
       Partition 1    Reserved              15 MB    17 KB
       Partition 2    Primary             1024 GB    16 MB
    
  9. 選取主要分區 2:

    DISKPART> select partition 2
    
  10. 刪除所選分區:

    DISKPART> delete partition
    
  11. 結束 diskpart

    DISKPART> exit
    

如果磁碟除了保留磁碟區外還有其他磁碟區,請重複上述步驟。只剩下預留分區時,請繼續執行下列步驟:

  1. 找出磁碟並確認沒有任何分割區後,請將 TESTDRIVE 環境變數設為「#」,然後輸入要測試的磁碟編號。

    C:/> set TESTDRIVE=#1
    
  2. 使用多個並行串流 (16 個以上) 執行循序寫入作業,並使用 1 MB 的 I/O 區塊大小和至少 64 的 I/O 深度,測試寫入輸送量:

    diskspd -d300 -b1M -o64 -Sh -t16 -si -w0 %TESTDRIVE%
    
  3. 執行隨機寫入作業,測試寫入 IOPS,I/O 區塊大小為 4 KB,I/O 深度至少為 256:

    diskspd -d300 -b4K -o256 -Sh -r -w0 %TESTDRIVE%
    
  4. 測試寫入延遲。測試 I/O 延遲時間時,VM 不得達到最大頻寬或 IOPS,否則觀察到的延遲時間將無法反映實際的 Persistent Disk I/O 延遲時間。

    diskspd -d300 -b4K -o4 -Sh -r -w0 -L %TESTDRIVE%
    
  5. 使用多個平行串流 (16 個以上) 執行循序讀取作業,並使用 1 MB 的 I/O 區塊大小和至少 64 的 I/O 深度,測試讀取輸送量:

    diskspd -d300 -b1M -o64 -Sh -t16 -si %TESTDRIVE%
    
  6. 執行隨機讀取作業,並使用 4 KB 的 I/O 區塊大小和至少 256 的 I/O 深度,測試讀取 IOPS:

    diskspd -d300 -b4K -o256 -Sh -r %TESTDRIVE%
    
  7. 如要測試讀取延遲時間,請務必將資料填滿磁碟,才能取得實際的延遲時間測量結果。測試期間,VM 不得達到 IOPS 或處理量上限,因為永久磁碟達到飽和度上限後,會推回傳入的 I/O 作業,這會反映為 I/O 延遲時間人為增加。

    diskspd -d300 -b4K -o4 -Sh -r -L %TESTDRIVE%
    
  8. 測試循序讀取頻寬。

    diskspd -d300 -b1M -o64 -Sh -t4 -si %TESTDRIVE%
    
  9. 測試循序寫入頻寬。

    diskspd -d300 -b1M -o64 -Sh -t4 -si -w100 %TESTDRIVE%
    
  10. 清除拋棄式永久磁碟和 VM:

    1. 刪除用於基準化效能的磁碟。
    2. 刪除為基準測試效能而建立的 VM。

後續步驟