改善 SMB Azure 檔案共用效能

本文說明如何改善進階 SMB Azure 檔案共用效能,包含使用 SMB 多重通道和中繼資料快取 (預覽)。

適用於

檔案共用類型 SMB NFS
標準檔案共用 (GPv2)、LRS/ZRS No No
標準檔案共用 (GPv2)、GRS/GZRS No No
進階檔案共用 (FileStorage)、LRS/ZRS Yes No

最佳化效能

下列秘訣可協助您最佳化效能:

  • 確定您的儲存體帳戶和用戶端並存在相同的 Azure 區域中,以降低網路延遲。
  • 使用多執行緒應用程式,並將負載分散到多個檔案。
  • SMB 多重通道的效能優點會隨著分散負載的檔案數目而增加。
  • 進階共用效能受到佈建的共用大小 (IOPS/輸出/輸入) 和單一檔案限制的約束。 如需詳細資訊,請參閱了解進階檔案共用的佈建
  • 單一 VM 用戶端的最大效能仍受 VM 限制的約束。 例如,Standard_D32s_v3 可支援 16000 MBps 的最大頻寬 (或 2GBps),系統會計量來自 VM 的輸出 (寫入儲存體),但不會計量輸入 (讀取儲存體)。 檔案共用效能必須符合電腦網路限制、CPU、內部儲存體可用的網路頻寬、IO 大小、平行處理原則,以及其他因素。
  • 初始測試通常是準備的一環。 捨棄結果並重複進行測試。
  • 如果效能受限於單一用戶端,而且工作負載仍低於佈建的共用限制,您可將負載分散到多個用戶端以獲得更高的效能。

IOPS、輸送量和 I/O 大小之間的關聯性

輸送量 = IO 大小 * IOPS

較大的 I/O 大小會產生較高的輸送量,而且延遲也會比較高,因此產生的網路 IOPS 數目會比較低。 較小的 I/O 大小會產生較高的 IOPS,但會使網路輸送量和延遲比較低。 如需詳細資訊,請參閱了解 Azure 檔案儲存體的效能

SMB 多重通道

SMB 多重通道可讓 SMB 3.x 用戶端建立連至 SMB 檔案共用的多個網路連線。 Azure 檔案儲存體針對 Windows 用戶端支援在進階檔案共用 (FileStorage 儲存體帳戶種類中的檔案共用) 中使用 SMB 多重通道。 在服務端,Azure 檔案儲存體中預設會停用 SMB 多重通道,但啟用不需要額外的成本。

福利

SMB 多重通道可讓用戶端使用多個網路連線以提升效能,同時降低所有權成本。 若要提高效能,可彙總多個 NIC 上的頻寬,並使用支援 NIC 的接收端調整 (RSS) 將 I/O 負載分散到多個 CPU。

  • 增加輸送量:多個連線可以同時在多個路徑上傳送資料,且因為使用更大的檔案大小與更大的 I/O 大小,需要單一 VM 或一組小型 VM 提供高輸送量,所以可以藉此大幅降低工作負載。 其中部分工作負載包含媒體和娛樂的內容建立或轉碼、基因體學和金融服務風險分析。
  • 較高的 IOPS:NIC RSS 功能可以透過多個連線,在多個 CPU 上有效分散負載。 這有助於提高 IOPS 規模且可有效利用 VM CPU。 這對具有小規模 I/O 大小的工作負載很實用,例如資料庫應用程式。
  • 網路容錯:多個連線可以減緩連線中斷的風險,因為用戶端不用再依賴單一連線。
  • 自動設定:用戶端和儲存體帳戶啟用 SMB 多重通道時,可以對現有連線進行動態探索,且可視需要建立額外的連線路徑。
  • 成本最佳化:連線到進階共用時,單一 VM 或一組小型 VM 的工作負載可以更上一階。 由於執行和管理工作負載所需要的 VM 數量減少,因此可以降低所有權的總成本。

若要深入了解 SMB 多重通道,請參閱 Windows 文件

這項功能可以提高多執行緒應用程式的效能,但通常對單一執行緒應用程式沒有幫助。 如需詳細資訊,請參閱效能比較一節。

限制

適用於 Azure 檔案共用的 SMB 多重通道目前有下列限制:

  • 僅支援使用 SMB 3.1.1 的 Windows 用戶端。 確定 SMB 用戶端作業系統已修補為建議的層級。
  • Linux 用戶端目前不支援或不建議使用。
  • 通道數目上限為四個,如需詳細資訊,請參閱這裡

組態

SMB 多重通道只有在用戶端 (您的用戶端) 和伺服器端 (您的 Azure 儲存體帳戶) 均啟用此功能時,才會有作用。

在 Windows 用戶端上,SMB 多重通道預設為啟用。 您可以執行下列 PowerShell 命令以確認設定:

Get-SmbClientConfiguration | Select-Object -Property EnableMultichannel

您必須在 Azure 儲存體帳戶上,啟用 SMB 多重通道。 請參閱啟用 SMB 多重通道

停用 SMB 多重通道

在大部分情況下,特別是多執行緒工作負載,用戶端應該會看到使用 SMB 多重通道後的效能提升。 不過,針對某些特定案例,例如單一執行緒工作負載或測試用途,建議您停用 SMB 多重通道。 如需詳細資訊,請參閱效能比較

確認 SMB 多重通道已正確設定

  1. 建立新的進階檔案共用或使用現有的進階共用。
  2. 確定您的用戶端支援 SMB 多重通道 (一或多個網路介面卡已啟用接收端調整)。 如需詳細資訊,請參閱 Windows 文件
  3. 將檔案共用裝載至您的用戶端。
  4. 使用您的應用程式產生負載。 複製工具 (例如 robocopy/MT) 或任何效能工具 (例如 Diskspd 至讀取/寫入檔案) 可能會產生負載。
  5. 以系統管理員身分開啟 PowerShell,並使用下列命令:Get-SmbMultichannelConnection |fl
  6. 尋找 MaxChannelsCurrentChannels 屬性。

Screenshot of Get-SMBMultichannelConnection results.

表現比較

讀取/寫入工作負載模式分為兩種類別:單一執行緒和多執行緒。 大部分的工作負載都會使用多個檔案,但在特定使用案例中,工作負載可搭配共用中的單一檔案運作。 本節涵蓋不同的使用案例和每個使用案例的效能影響。 一般而言,大部分的工作負載都是多執行緒,並將工作負載分散在多個檔案,因此應該可以看到 SMB 多重通道的效能顯著提升。

  • 多執行緒/多個檔案:依據工作負載模式,您應該會發現多重通道的讀取和寫入 I/O 效能明顯提升。 就 IOPS、輸送量和延遲而言,效能提升從 2 倍到 4 倍不等。 若為此類別,應啟用 SMB 多重通道以獲得最佳效能。
  • 多執行緒/單一檔案:對於此類別中的大部分使用案例,啟用 SMB 多重通道對工作負載有利,特別是在工作負載的平均 I/O 大小 > ~16k 的情況下。 因 SMB 多重通道受益的幾個範例案例:備份或復原單一大型檔案。 遇到小型 I/O 的工作負載繁重這種例外狀況時,建議您停用 SMB 多重通道。 在這種情況下,您可能會發現效能稍微下降 ~10%。 視使用案例而定,請考慮將負載分散到多個檔案,或停用此功能。 如需詳細資訊,請參閱設定一節。
  • 單一執行緒/多個檔案或單一檔案:對於大部分的單一執行緒工作負載而言,效能獲益最低,因為缺少平行處理原則。 如果啟用 SMB 多重通道,通常效能會稍微降低約 ~10%。 在此情況下,很適合用來停用 SMB 多重通道,但有一個例外狀況。 如果單一執行緒的工作負載可將負載分散到多個檔案,並使用平均值較大的 I/O 大小 (> ~16k),則 SMB 多重通道應該能稍微提升效能。

效能測試設定

本文中的圖表均使用下列設定:單一標準 D32s v3 VM,搭配已啟用單一 RSS 的 NIC 與四個通道。 負載是使用 diskspd.exe、多重執行緒 (I/O 深度為 10) 和隨機 I/O (具有各種 I/O 大小) 產生。

大小 vCPU 記憶體:GiB 暫存儲存體 (SSD) GiB 最大資料磁碟 最大快取和暫存儲存體輸送量:IOPS/MBps (快取大小,以 GiB 為單位) 最大未快取磁碟輸送量:IOPS/MBps 最大 NIC 預期的網路頻寬 (Mbps)
Standard_D32s_v3 (機器翻譯) 32 128 256 32 64000/512 (800) 51200/768 8 16000

Screenshot that shows the performance test configuration.

多執行緒/多個檔案搭配 SMB 多重通道

負載是針對具有各種 IO 大小的 10 個檔案產生。 擴大測試結果顯示:啟用 SMB 多重通道後,IOPS 和輸送量測試結果均有顯著改善。 下列圖表描述結果:

Diagram of performance.

Diagram of throughput performance.

  • 在單一 NIC 上,在讀取方面,觀察到效能提升 2 倍到 3 倍,而在寫入方面,IOP 和輸送量均提升 3 倍到 4 倍。
  • 即使在使用單一 NIC 和四個通道的限制情況下,SMB 多重通道仍允許 IOPS 和輸送量觸及 VM 限制。
  • 因為輸出 (或讀取至儲存體) 不會計量,所以讀取輸送量可以超過 VM 發佈的限制 16,000 Mbps (2 GiB/s)。 測試達到 >2.7 GiB/s。 輸入 (或寫入至儲存體) 仍須遵循 VM 限制。
  • 將負載分散到多個檔案,可以大幅提升效能。

此測試中使用的範例命令如下:

diskspd.exe -W300 -C5 -r -w100 -b4k -t8 -o8 -Sh -d60 -L -c2G -Z1G z:\write0.dat z:\write1.dat z:\write2.dat z:\write3.dat z:\write4.dat z:\write5.dat z:\write6.dat z:\write7.dat z:\write8.dat z:\write9.dat .

使用 SMB 多執行緒的多執行緒/單一檔案工作負載

負載是針對單一 128 GiB 檔案而產生。 在啟用 SMB 多執行緒的情況下,使用多執行緒/單一檔案的擴大測試會顯示大部分情況下的效能改善結果。 下列圖表描述結果:

Diagram of IOPS performance.

Diagram of single file throughput performance.

  • 在平均 I/O 大小較大 (> ~16k) 的單一 NIC 上,讀取和寫入都有顯著改善。
  • 若 I/O 大小較小,則在啟用 SMB 多重通道時,會對效能造成 ~10% 的輕微影響。 您可以藉由將負載分散到多個檔案,或停用此功能,來減輕這種情況。
  • 效能仍受單一檔案限制的約束。

適用於進階 SMB 檔案共用的中繼資料快取

中繼資料快取是 SMB Azure 進階檔案共享的增強功能,旨在降低中繼資料延遲、增加可用的 IOPS,以及提升網路輸送量。 此預覽功能可改善下列中繼資料 API,而且透過 Windows 與 Linux 用戶端皆可使用:

  • 建立​​
  • 開盤
  • 關閉
  • 刪除

如要開始使用,請註冊公開預覽 (英文),以取得其他詳細資料。 目前此預覽功能僅適用於進階 SMB 檔案共用 (FileStorage 儲存體帳戶類型中的檔案共用)。 使用這項功能不需要額外的成本。

區域可用性

目前中繼資料快取預覽只能在下列 Azure 區域中使用。

  • 澳大利亞東部
  • 巴西東南部
  • 法國南部
  • 德國中西部
  • 瑞士北部
  • 阿拉伯聯合大公國中部
  • 阿拉伯聯合大公國北部
  • 美國中西部

使用中繼資料快取的改善效能

大部分包含中繼資料或使用模式的工作負載都可以受益於中繼資料快取。 若要判斷工作負載是否含有中繼資料,您可以使用 Azure 監視器 (機器翻譯) 依 API 維度分割交易。

一般有大量中繼資料的工作負載和使用模式包括:

  • Web/應用程式服務
  • DevOps 工作
  • 索引編製/批次作業
  • 擁有主目錄或其他工作負載的虛擬桌面,主要與許多小型檔案、目錄或控制代碼互動

下列圖表顯示可能的結果。

降低中繼資料延遲

藉由快取未來查閱的檔案和目錄路徑,中繼資料快取可針對大規模具有大量中繼資料的工作負載,將經常存取檔案和目錄的延遲降低 30% 以上。

Chart showing latency in milliseconds with and without metadata caching.

增加可用的 IOPS

中繼資料快取可為大規模具有大量中繼資料的工作負載增加 60% 以上的可用 IOPS。

Chart showing available IOPS with and without metadata caching.

增加網路輸送量

中繼資料快取可為大規模具有大量中繼資料的工作負載增加 60% 以上的網路輸送量。

Chart showing network throughput with and without metadata caching.

下一步