分享方式:


Azure Blob 儲存體中的網路檔案系統 (NFS) 3.0 效能考量

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

新增用戶端以增加輸送量

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

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

Standard performance

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

Premium performance

針對小規模應用程式使用進階區塊 Blob 儲存體帳戶

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

下圖中的每個橫條顯示進階與標準效能儲存體帳戶之間達成頻寬的差異。 當用戶端數目增加時,差異就會減少。

Relative performance

改善預先讀取大小以增加大型檔案讀取輸送量

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 支援時才應使用此選項。 在沒有 Azure nconnect 支援的情況下使用 nconnect 掛接選項會降低輸送量、造成多次逾時,並導致 READDIRREADIRPLUS 等命令無法正確運作。

大部分可與 Azure 虛擬機器搭配使用的最新 Ubuntu 核心都提供 Azure nconnect 支援。 若要了解您的核心是否提供 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。

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

  • 盡可能使用最多的執行緒。

  • 使用較大的區塊大小。

  • 從位於與儲存體帳戶相同區域的用戶端提出儲存體要求。 這樣可以改善網路延遲。

下一步