Condividi tramite


Considerazioni sulle prestazioni di Network File System (NFS) 3.0 nell'archiviazione BLOB di Azure

L'archiviazione BLOB supporta ora il protocollo NFS (Network File System) 3.0. Questo articolo contiene raccomandazioni che consentono di ottimizzare le prestazioni delle richieste di archiviazione. Per altre informazioni sul supporto di NFS 3.0 per Archiviazione BLOB di Azure, vedere Supporto del protocollo NFS (Network File System) 3.0 per l'archiviazione BLOB di Azure.

Aggiungere client per aumentare la velocità effettiva

Archiviazione BLOB di Azure ridimensiona in modo lineare fino a raggiungere il limite massimo di uscita e ingresso dell'account di archiviazione. Pertanto, le applicazioni possono ottenere una velocità effettiva più elevata usando più client. Per visualizzare i limiti di uscita e ingresso dell'account di archiviazione, vedere Obiettivi di scalabilità e prestazioni per gli account di archiviazione standard.

Il grafico seguente illustra come aumenta la larghezza di banda quando si aggiungono altri client. In questo grafico un client è una macchina virtuale (VM) e con un account di archiviazione generico v2 standard.

Prestazioni standard

Il grafico seguente mostra lo stesso effetto quando applicato a un account di archiviazione BLOB a blocchi Premium.

Prestazioni Premium

Usare gli account di archiviazione BLOB a blocchi Premium per applicazioni su larga scala

Non tutte le applicazioni possono aumentare aggiungendo altri client. Per queste applicazioni, l'account di archiviazione BLOB a blocchi Premium di Azure offre una bassa latenza coerente e tassi di transazione elevati. L'account di archiviazione BLOB a blocchi Premium può raggiungere la larghezza di banda massima con meno thread e client. Ad esempio, con un singolo client, un account di archiviazione BLOB a blocchi Premium può ottenere una larghezza di banda 2,3x rispetto alla stessa configurazione usata con un account di archiviazione generico per utilizzo generico delle prestazioni standard v2.

Ogni barra del grafico seguente mostra la differenza nella larghezza di banda ottenuta tra gli account di archiviazione delle prestazioni Premium e standard. Man mano che il numero di client aumenta, tale differenza diminuisce.

Prestazioni relative

Migliorare le dimensioni di lettura in anticipo per aumentare la velocità effettiva di lettura file di grandi dimensioni

Il parametro del kernel read_ahead_kb rappresenta la quantità di dati aggiuntivi che devono essere letti dopo aver soddisfatto una determinata richiesta di lettura. È possibile aumentare questo parametro su 16 MiB per migliorare la velocità effettiva di lettura file di grandi dimensioni.

export AZMNT=/your/container/mountpoint

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

Evitare sovrascrizioni frequenti sui dati

Richiede più tempo per completare un'operazione di sovrascrizione rispetto a una nuova operazione di scrittura. Questo perché un'operazione di sovrascrittura NFS, in particolare una modifica parziale del file sul posto, è una combinazione di diverse operazioni BLOB sottostanti: una lettura, una modifica e un'operazione di scrittura. Pertanto, un'applicazione che richiede modifiche frequenti sul posto non è adatta per gli account di archiviazione BLOB abilitati per NFS.

Distribuire Cache HPC di Azure per applicazioni sensibili alla latenza

Alcune applicazioni possono richiedere bassa latenza oltre alla velocità effettiva elevata. È possibile distribuire Azure Cache HPC per migliorare significativamente la latenza. Altre informazioni sulla latenza nell'archiviazione BLOB.

Aumentare il numero di connessioni TCP

È possibile usare l'opzione nconnect di montaggio per ottenere prestazioni di lettura e scrittura più elevate da una singola macchina virtuale, ma solo se il kernel Linux dispone del supporto di Azure nconnect.

nconnect è un'opzione di montaggio Linux lato client che consente di usare più connessioni TCP tra il client e l'endpoint del servizio BLOB. È possibile usare l'opzione nconnect nel comando di montaggio per specificare il numero di connessioni TCP che si desidera creare (ad esempio: 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).

Importante

Anche se le distribuzioni Linux più recenti supportano completamente nconnect, è consigliabile usare questa opzione solo se il kernel ha il supporto di Azure nconnect. L'uso dell'opzione di montaggio senza supporto di Azure nconnect ridurrà la nconnect velocità effettiva, causerà più timeout e causerà comandi come READDIR e READIRPLUS per funzionare in modo errato.

Il supporto di Azure nconnect è disponibile con la maggior parte dei più recenti kernal Ubuntu che possono essere usati con macchine virtuali di Azure. Per scoprire se il supporto di Azure nconnect è disponibile per il kernel, eseguire il comando seguente.

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

Se il supporto di Azure nconnect è disponibile per il kernel, Yes viene stampato nella console. In caso contrario, 'No viene stampato nella console.

Se il supporto di Azure nconnect è disponibile, abilitarlo eseguendo il comando seguente.

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

Altre raccomandazioni sulle procedure consigliate

  • Usare macchine virtuali con larghezza di banda di rete sufficiente.

  • Usare più punti di montaggio quando i carichi di lavoro lo consentono.

  • Usare il maggior numero possibile di thread.

  • Usare dimensioni di blocchi di grandi dimensioni.

  • Effettuare richieste di archiviazione da un client che si trova nella stessa area dell'account di archiviazione. Ciò può migliorare la latenza di rete.

Passaggi successivi