Prestatieoverwegingen voor Network File System (NFS) 3.0 in Azure Blob Storage
Blob Storage ondersteunt nu het NFS 3.0-protocol (Network File System). Dit artikel bevat aanbevelingen waarmee u de prestaties van uw opslagaanvragen kunt optimaliseren. Zie Network File System (NFS) 3.0-protocolondersteuning voor Azure Blob Storage voor meer informatie over NFS 3.0-ondersteuning 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 Schaalbaarheids- en prestatiedoelen voor standaardopslagaccounts om de limieten voor uitgaand verkeer en inkomend verkeer van opslagaccounts weer te geven.
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.
In de volgende grafiek ziet u hetzelfde effect wanneer dit wordt toegepast op een Premium-account voor blok-blobopslag.
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 maximale bandbreedte bereiken met minder threads en clients. Met één client kan een Premium blok-blob-opslagaccount bijvoorbeeld 2,3x bandbreedte behalen in vergelijking met dezelfde instelling die wordt gebruikt met een standaardopslagaccount voor algemeen gebruik v2.
Elke staaf in de volgende grafiek toont het verschil in de bereikte bandbreedte tussen opslagaccounts voor Premium- en Standard-prestaties. Naarmate het aantal clients toeneemt, neemt dat verschil af.
De grootte van vooruitlezen verbeteren om de leesdoorvoer van grote bestanden te verhogen
De read_ahead_kb kernelparameter vertegenwoordigt de hoeveelheid extra gegevens die moet worden gelezen nadat aan een bepaalde leesaanvraag is voldaan. U kunt deze parameter verhogen tot 16 MiB om de doorvoer voor 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 overschrijvingen voor gegevens
Het voltooien van een overschrijfbewerking duurt langer dan een nieuwe schrijfbewerking. Dat komt omdat een NFS-overschrijfbewerking, met name een gedeeltelijke in-place bestandsbewerking, een combinatie is van verschillende onderliggende blobbewerkingen: een leesbewerking, een wijziging en een schrijfbewerking. Daarom is een toepassing waarvoor regelmatig in-place bewerkingen nodig zijn, niet geschikt voor blobopslagaccounts met NFS-functionaliteit.
Azure HPC Cache implementeren voor latentiegevoelige toepassingen
Sommige toepassingen vereisen mogelijk een lage latentie naast een hoge doorvoer. U kunt Azure HPC Cache implementeren om de latentie aanzienlijk te verbeteren. Meer informatie over latentie in Blob-opslag.
Het aantal TCP-verbindingen verhogen
U kunt de koppelingsoptie nconnect
gebruiken om hogere cumulatieve lees- en schrijfprestaties te krijgen van één virtuele machine, maar alleen als uw Linux-kernel ondersteuning voor Azure nconnect heeft.
nconnect
is een optie voor Linux-koppeling 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. Het gebruik van de nconnect
koppelingsoptie zonder ondersteuning voor Azure nconnect vermindert de doorvoer, veroorzaakt meerdere time-outs en zorgt ervoor dat opdrachten zoals READDIR
en READIRPLUS
onjuist werken.
Ondersteuning voor Azure nconnect is beschikbaar voor de meeste recente Ubuntu-kernals die kunnen worden gebruikt met virtuele Azure-machines. Voer de volgende opdracht uit om erachter te komen of ondersteuning voor Azure nconnect 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, Yes
wordt deze afgedrukt naar de console.
'No
Anders wordt 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 aanbevolen procedures
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.