Zagadnienia dotyczące wydajności systemu plików sieciowych (NFS) 3.0 w usłudze Azure Blob Storage

Usługa Blob Storage obsługuje teraz protokół 3.0 systemu plików sieciowych (NFS). Ten artykuł zawiera zalecenia, które ułatwiają optymalizację wydajności żądań magazynu. Aby dowiedzieć się więcej na temat obsługi systemu plików NFS 3.0 dla Azure Blob Storage, zobacz Obsługa protokołu sieciowego systemu plików (NFS) 3.0 dla usługi Azure Blob Storage.

Dodawanie klientów w celu zwiększenia przepływności

Usługa Azure Blob Storage skaluje liniowo, dopóki nie osiągnie maksymalnego limitu ruchu przychodzącego i ruchu przychodzącego konta magazynu. W związku z tym aplikacje mogą uzyskać większą przepływność przy użyciu większej liczby klientów. Aby wyświetlić limity ruchu wychodzącego i ruchu przychodzącego konta magazynu, zobacz Scalability and performance targets for Standard Storage accounts (Cele skalowalności i wydajności dla kont magazynu w warstwie Standardowa).

Na poniższym wykresie pokazano, jak zwiększa się przepustowość w miarę dodawania kolejnych klientów. Na tym wykresie klient jest maszyną wirtualną i standardowym kontem magazynu ogólnego przeznaczenia w wersji 2.

Standardowa wydajność

Na poniższym wykresie przedstawiono ten sam efekt w przypadku zastosowania do konta magazynu blokowych obiektów blob w warstwie Premium.

Wydajność w warstwie Premium

Używanie kont magazynu blokowych obiektów blob w warstwie Premium dla aplikacji o małej skali

Nie wszystkie aplikacje mogą być skalowane w górę przez dodanie większej liczby klientów. W przypadku tych aplikacji konto magazynu blokowych obiektów blob platformy Azure w warstwie Premium oferuje spójne małe opóźnienia i wysokie stawki transakcji. Konto magazynu blokowych obiektów blob w warstwie Premium może osiągnąć maksymalną przepustowość z mniejszą liczbą wątków i klientów. Na przykład w przypadku pojedynczego klienta konto magazynu blokowych obiektów blob w warstwie Premium może osiągnąć przepustowość 2,3 x w porównaniu z tą samą konfiguracją używaną ze standardowym kontem magazynu ogólnego przeznaczenia ogólnego przeznaczenia w wersji 2.

Każdy słupek na poniższym wykresie przedstawia różnicę w osiągniętej przepustowości między kontami magazynu o wydajności Premium i Standardowa. Wraz ze wzrostem liczby klientów różnica ta spada.

Względna wydajność

Zwiększanie rozmiaru odczytu z wyprzedzeniem w celu zwiększenia przepływności odczytu dużych plików

Parametr jądra read_ahead_kb reprezentuje ilość dodatkowych danych, które powinny być odczytywane po spełnieniu danego żądania odczytu. Ten parametr można zwiększyć do 16 MiB, aby zwiększyć przepływność odczytu dużych plików.

export AZMNT=/your/container/mountpoint

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

Unikaj częstego zastępowania danych

Ukończenie operacji zastępowania trwa dłużej niż nowa operacja zapisu. Dzieje się tak, ponieważ operacja zastępowania systemu plików NFS, zwłaszcza częściowa edycja pliku w miejscu, jest kombinacją kilku podstawowych operacji obiektów blob: operacji odczytu, modyfikacji i zapisu. W związku z tym aplikacja, która wymaga częstych edycji w miejscu, nie jest odpowiednia dla kont magazynu obiektów blob z obsługą systemu plików NFS.

Wdrażanie usługi Azure HPC Cache dla aplikacji wrażliwych na opóźnienia

Niektóre aplikacje mogą wymagać małych opóźnień oprócz wysokiej przepływności. Możesz wdrożyć usługę Azure HPC Cache, aby znacznie zwiększyć opóźnienie. Dowiedz się więcej o opóźnieniu w usłudze Blob Storage.

Zwiększ liczbę połączeń TCP

Możesz użyć nconnect opcji instalacji, aby uzyskać wyższą zagregowaną wydajność odczytu i zapisu z jednej maszyny wirtualnej, ale tylko wtedy, gdy jądro systemu Linux ma obsługę połączenia Azure nconnect.

nconnect to opcja instalacji systemu Linux po stronie klienta, która umożliwia korzystanie z wielu połączeń TCP między klientem a punktem końcowym usługi Blob. Możesz użyć nconnect opcji w poleceniu instalacji, aby określić liczbę połączeń TCP, które chcesz utworzyć (na przykład: 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).

Ważne

Podczas gdy najnowsze dystrybucje systemu Linux w pełni obsługują połączenie nconnect, należy użyć tej opcji tylko wtedy, gdy jądro ma obsługę programu Azure nconnect. nconnect Korzystanie z opcji instalacji bez obsługi połączeń Azure nconnect spowoduje zmniejszenie przepływności, spowodowanie wielu przekroczenia limitu czasu i spowodowanie nieprawidłowego działania poleceń, takich jak READDIR i READIRPLUS .

Obsługa programu Azure nconnect jest dostępna z większością najnowszych kernals systemu Ubuntu, których można używać z maszynami wirtualnymi platformy Azure. Aby dowiedzieć się, czy obsługa programu Azure nconnect jest dostępna dla jądra, uruchom następujące polecenie.

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

Jeśli obsługa programu Azure nconnect jest dostępna dla jądra, Yes zostanie wydrukowana w konsoli programu . 'No W przeciwnym razie zostanie wydrukowany w konsoli programu .

Jeśli obsługa programu Azure nconnect jest dostępna, włącz ją, uruchamiając następujące polecenie.

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

Inne zalecenia dotyczące najlepszych rozwiązań

  • Użyj maszyn wirtualnych z wystarczającą przepustowością sieci.

  • Użyj wielu punktów instalacji, gdy zezwalają na to obciążenia.

  • Używaj jak największej liczby wątków.

  • Używaj dużych rozmiarów bloków.

  • Wysyłaj żądania magazynu od klienta znajdującego się w tym samym regionie co konto magazynu. Może to poprawić opóźnienie sieci.

Następne kroki