共用方式為


Azure Blob 儲存體中的網路文件系統(NFS)3.0 效能考慮

Blob 儲存體現在支援網路檔案系統 (NFS) 3.0 通訊協定。 本文包含可協助您優化記憶體要求效能的建議。 若要深入瞭解 Azure Blob 記憶體的 NFS 3.0 支援,請參閱 Azure Blob 記憶體的網路文件系統 (NFS) 3.0 通訊協議支援

新增客戶以提高吞吐量

Azure Blob 儲存體會以線性方式調整,直到達到儲存體帳戶的輸出上限和輸入限制為止。 因此,您的應用程式可以使用更多客戶端來達到更高的輸送量。 若要檢視記憶體帳戶的輸出和輸入限制,請參閱 標準記憶體帳戶的延展性和效能目標

下圖顯示當您新增更多用戶端時,帶寬如何增加。 在此圖表中,用戶端是虛擬機(VM),且具有標準一般用途 v2 儲存器帳戶。

標準效能

下圖顯示套用至進階區塊 Blob 記憶體帳戶時的相同效果。

進階效能

針對小型應用程式使用高階區塊 Blob 儲存帳戶

並非所有應用程式都可以藉由增加更多用戶來擴充。 針對這些應用程式, Azure 進階區塊 Blob 記憶體帳戶 提供一致的低延遲和高交易速率。 進階區塊 Blob 記憶體帳戶可以達到具有較少線程和用戶端的最大頻寬。 例如,使用單一用戶端時,相較於搭配標準效能一般用途 v2 儲存器帳戶使用的相同設定,進階區塊 Blob 記憶體帳戶可以達到 2.3 倍 的頻寬。

下圖中的每個橫條都會顯示進階和標準效能記憶體帳戶之間達到頻寬的差異。 隨著客戶端數目的增加,該差異會減少。

相對效能

提高預讀大小以增強大型檔案讀取性能

read_ahead_kb核心參數代表完成指定讀取要求之後應該讀取的額外數據量。 您可以將此參數增加到 16 MiB,以改善大型檔案讀取輸送量。

export AZMNT=/your/container/mountpoint

echo 16384 > /sys/class/bdi/0:$(stat -c "%d" $AZMNT)/read_ahead_kb

避免對數據進行頻繁覆寫

完成覆寫作業所需的時間比新的寫入作業還長。 這是因為 NFS 覆寫作業,特別是部分就地編輯檔案,是數個基礎 Blob 作業的組合:包括讀取、修改和寫入作業。 因此,需要經常就地編輯的應用程式不適合使用啟用 NFS 的 Blob 儲存帳戶。

針對延遲敏感性應用程式部署 Azure HPC Cache

除了高輸送量之外,某些應用程式可能需要低延遲。 您可以部署 Azure HPC Cache ,大幅改善延遲。 深入瞭解 Blob 記憶體中的延遲

增加 TCP 連線數目

您可以使用 nconnect 掛接選項,從單一 VM 取得更高的匯總讀取和寫入效能,但前提是您的 Linux 核心具有 Azure nconnect 支援

nconnect 是用戶端 Linux 掛接選項,可讓您在用戶端與 Blob 服務端點之間使用多個 TCP 連線。 您可以使用 nconnect 掛接指令中的 選項來指定您要建立的 TCP 連線數目(例如: mount -t aznfs -o nconnect=16,sec=sys,vers=3,nolock,proto=tcp <storage-account-name>.blob.core.windows.net:/<storage-account-name>/<container-name> /nfsdatain

這很重要

雖然最新的 Linux 發行版完全支援 nconnect,但只有在核心具有 Azure nconnect 支援時,才應該使用此選項。 使用nconnect掛接選項且沒有 Azure nconnect 支援,會降低輸送量、造成多次逾時,並導致 READDIRREADIRPLUS 等命令無法正確運作。

Azure nconnect 支援適用於大部分最新的 Ubuntu 核心,可與 Azure 虛擬機搭配使用。 若要瞭解您的核心是否有 Azure nconnect 支援,請執行下列命令。

[ -e /sys/module/sunrpc/parameters/enable_azure_nconnect ] && echo "Yes" || echo "No"

如果您的核心支援 Azure nconnect,則主控台會顯示 Yes。 否則, 'No 會列印到主控台。

如果 Azure nconnect 支援可供使用,請執行下列命令加以啟用。

echo Y > /sys/module/sunrpc/parameters/enable_azure_nconnect

其他最佳做法建議

  • 使用具有足夠網路頻寬的 VM。

  • 當您的工作負載允許時,請使用多個裝入點。

  • 盡量使用最多的線程。

  • 使用大型區塊。

  • 從與記憶體帳戶位於相同區域的用戶端提出記憶體要求。 這可以改善網路等待時間。

後續步驟