Share via


Prestatieoverwegingen voor Network File System (NFS) 3.0 in Azure Blob Storage

Blob Storage ondersteunt nu het NFS-protocol (Network File System) 3.0. Dit artikel bevat aanbevelingen waarmee u de prestaties van uw opslagaanvragen kunt optimaliseren. Voor meer informatie over ondersteuning voor NFS 3.0 voor Azure Blob Storage raadpleegt u ondersteuning voor NFS 3.0-protocol (Network File System) 3.0 voor Azure Blob Storage.

Clients toevoegen om de doorvoer te verhogen

Azure Blob Storage wordt lineair geschaald totdat de maximale limiet voor uitgaand en inkomend verkeer van opslagaccounts wordt bereikt. Daarom kunnen uw toepassingen een hogere doorvoer bereiken door meer clients te gebruiken. Zie om de uitgaande en binnenkomende limieten voor opslagaccounts te bekijken, Schaalbaarheids- en prestatiedoelen voor standaardopslagaccounts.

In de volgende grafiek ziet u hoe de bandbreedte toeneemt naarmate u meer clients toevoegt. In deze grafiek is een client een virtuele machine (VM) en met een standaard v2-opslagaccount voor algemeen gebruik.

Standaardprestaties

In de volgende grafiek ziet u hetzelfde effect wanneer dit wordt toegepast op een premium blok-blobopslagaccount.

Premium-prestaties

Premium blok-blob-opslagaccounts gebruiken voor kleinschalige toepassingen

Niet alle toepassingen kunnen omhoog worden geschaald door meer clients toe te voegen. Voor deze toepassingen biedt het Azure Premium-account voor blok-blobopslag consistente lage latentie en hoge transactiesnelheden. Het premium blok-blob-opslagaccount kan de maximale bandbreedte bereiken met minder threads en clients. Met één client kan een premium blok-blob-opslagaccount bijvoorbeeld een bandbreedte van 2,3x bereiken in vergelijking met dezelfde installatie die wordt gebruikt met een standaardopslagaccount voor algemeen gebruik v2.

Elke staaf in de volgende grafiek toont het verschil in de gerealiseerde bandbreedte tussen Premium- en Standard Performance Storage-accounts. Naarmate het aantal clients toeneemt, neemt dat verschil af.

Relatieve prestaties

De leesvoorraadgrootte verbeteren om de leesdoorvoer voor grote bestanden te vergroten.

De read_ahead_kb kernelparameter vertegenwoordigt de hoeveelheid extra gegevens die moeten worden gelezen nadat aan een bepaalde leesaanvraag is voldaan. U kunt deze parameter verhogen naar 16 MiB om de doorvoer van het lezen van grote bestanden te verbeteren.

export AZMNT=/your/container/mountpoint

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

Vermijd frequente overschrijven van gegevens

Het duurt langer om een overschrijfbewerking te voltooien dan een nieuwe schrijfbewerking. Dat komt doordat een NFS-overschrijfbewerking, met name een gedeeltelijke in-place bestandsbewerking, een combinatie is van verschillende onderliggende blobbewerkingen: een lees-, wijzigings- en schrijfbewerking. Daarom is een toepassing die frequente bewerkingen ter plaatse vereist, niet geschikt voor blobopslagaccounts die NFS ondersteunen.

Azure HPC Cache implementeren voor latentiegevoelige toepassingen

Voor sommige toepassingen is mogelijk een lage latentie vereist, naast een hoge doorvoer. U kunt Azure HPC Cache implementeren om de latentie aanzienlijk te verbeteren. Meer informatie over latentie in Blob Storage.

Het aantal TCP-verbindingen verhogen

U kunt de nconnect koppelingsoptie gebruiken om betere statistische lees- en schrijfprestaties van één VIRTUELE machine te krijgen, maar alleen als uw Linux-kernel ondersteuning voor Azure nconnect heeft.

nconnect is een linux-koppelingsoptie aan de clientzijde waarmee u meerdere TCP-verbindingen tussen de client en het Blob-service-eindpunt kunt gebruiken. U kunt de nconnect optie in de koppelingsopdracht gebruiken om het aantal TCP-verbindingen op te geven dat u wilt maken (bijvoorbeeld: 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).

Belangrijk

Hoewel de nieuwste Linux-distributies nconnect volledig ondersteunen, moet u deze optie alleen gebruiken als uw kernel ondersteuning voor Azure nconnect heeft. Als u de nconnect koppelingsoptie zonder ondersteuning voor koppelen van Azure gebruikt, neemt de doorvoer af, veroorzaakt u meerdere time-outs en zorgt u ervoor dat opdrachten zoals READDIR en READIRPLUS onjuist werken.

Azure nconnect-ondersteuning is beschikbaar met de meeste recente Ubuntu-kernels die kunnen worden gebruikt met virtuele Azure-machines. Voer de volgende opdracht uit om erachter te komen of azure nconnect-ondersteuning beschikbaar is voor uw kernel.

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

Als Azure nconnect-ondersteuning beschikbaar is voor uw kernel, wordt Yes naar de console afgedrukt. Anders wordt 'No afgedrukt op de console.

Als azure nconnect-ondersteuning beschikbaar is, schakelt u deze in door de volgende opdracht uit te voeren.

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

Andere aanbevelingen voor best practices

  • Gebruik VM's met voldoende netwerkbandbreedte.

  • Gebruik meerdere koppelpunten wanneer uw workloads dit toestaan.

  • Gebruik zoveel mogelijk threads.

  • Gebruik grote blokgrootten.

  • Maak opslagaanvragen van een client die zich in dezelfde regio bevindt als het opslagaccount. Dit kan de netwerklatentie verbeteren.

Volgende stappen