Migliorare le prestazioni della condivisione file di Azure SMB

Questo articolo illustra come migliorare le prestazioni per le condivisioni file di Azure SMB Premium, tra cui l'uso di SMB multicanale e la memorizzazione nella cache dei metadati (anteprima).

Si applica a

Tipo di condivisione file SMB NFS
Condivisioni file Standard (GPv2), archiviazione con ridondanza locale/archiviazione con ridondanza della zona No No
Condivisioni file Standard (GPv2), archiviazione con ridondanza geografica/archiviazione con ridondanza geografica della zona No No
Condivisioni file Premium (FileStorage), archiviazione con ridondanza locale/archiviazione con ridondanza della zona Yes No

Ottimizzazione delle prestazioni

I suggerimenti seguenti possono aiutare a ottimizzare le prestazioni:

  • Assicurarsi che l'account di archiviazione e il client si trovino nella stessa area di Azure per ridurre la latenza di rete.
  • Usare applicazioni multithread e distribuire il carico tra più file.
  • I vantaggi delle prestazioni di SMB multicanale aumentano con il numero di file che distribuiscono il carico.
  • Le prestazioni della condivisione Premium sono vincolate dalle dimensioni delle condivisioni di cui è stato effettuato il provisioning (IOPS/egress/ingress) e dai limiti dei singoli file. Per informazioni dettagliate, vedere Informazioni sul provisioning per le condivisioni file Premium.
  • Le prestazioni massime di un singolo client di macchine virtuali sono ancora associate ai limiti delle macchine virtuali. Ad esempio, Standard_D32s_v3 può supportare una larghezza di banda massima di 16.000 MBps (o 2GBps), l'uscita dalla macchina virtuale (scritture nell'archiviazione) è a consumo, il traffico in ingresso (letture dall'archiviazione) non è. Le prestazioni della condivisione file sono soggette a limiti di rete del computer, CPU, larghezza di banda di rete disponibile per l'archiviazione interna, dimensioni di I/O, parallelismo e altri fattori.
  • Il test iniziale è in genere un riscaldamento. Rimuovere i risultati e ripetere il test.
  • Se le prestazioni sono limitate da un singolo client e il carico di lavoro è ancora inferiore ai limiti di condivisione di cui è stato effettuato il provisioning, è possibile ottenere prestazioni più elevate distribuendo il carico su più client.

Relazione tra le dimensioni di I/O al secondo, velocità effettiva e I/O

Velocità effettiva = Dimensioni I/O al secondo * operazioni di I/O al secondo

Le dimensioni di I/O più elevate determinano una velocità effettiva più elevata e avranno latenze più elevate, causando un numero inferiore di operazioni di I/O al secondo nette. Le dimensioni di I/O inferiori determinano operazioni di I/O al secondo più elevate, ma comportano una minore velocità effettiva e latenze nette. Per altre informazioni, vedere Informazioni sulle prestazioni File di Azure.

SMB multicanale

SMB multicanale consente a un client SMB 3.x di stabilire più connessioni di rete con una condivisione file SMB. File di Azure supporta SMB multicanale nelle condivisioni file Premium (condivisioni file nel tipo di account di archiviazione File Archiviazione) per i client Windows. Sul lato servizio, SMB multicanale è disabilitato per impostazione predefinita in File di Azure, ma non è previsto alcun costo aggiuntivo per l'abilitazione.

Vantaggi

SMB multicanale consente ai client di usare più connessioni di rete che offrono prestazioni migliori riducendo al contempo il costo di proprietà. Un miglioramento delle prestazioni viene ottenuto tramite l'aggregazione della larghezza di banda su più schede di interfaccia di rete e usando il supporto rss (Receive Side Scaling) per distribuire il carico di I/O tra più CPU.

  • Maggiore velocità effettiva: più connessioni consentono il trasferimento dei dati su più percorsi in parallelo e quindi vantaggi notevoli per i carichi di lavoro che usano dimensioni di file più grandi con dimensioni di I/O maggiori e richiedono una velocità effettiva elevata da una singola macchina virtuale o da un set più piccolo di macchine virtuali. Alcuni di questi carichi di lavoro includono contenuti multimediali e intrattenimento per la creazione di contenuti o la transcodifica, genomica e analisi dei rischi dei servizi finanziari.
  • Operazioni di I/O al secondo superiori: la funzionalità RSS della scheda di interfaccia di rete consente una distribuzione efficace del carico tra più CPU con più connessioni. In questo modo è possibile ottenere una scalabilità più elevata delle operazioni di I/O al secondo e un utilizzo effettivo delle CPU della macchina virtuale. Ciò è utile per i carichi di lavoro con dimensioni di I/O ridotte, ad esempio le applicazioni di database.
  • Tolleranza di errore di rete: più connessioni attenuano il rischio di interruzioni perché i client non si basano più su una singola connessione.
  • Configurazione automatica: quando SMB multicanale è abilitato nei client e gli account di archiviazione, consente l'individuazione dinamica delle connessioni esistenti e può creare percorsi di connessione aggiuntivi in base alle esigenze.
  • Ottimizzazione dei costi: i carichi di lavoro possono ottenere una scalabilità più elevata da una singola macchina virtuale o da un piccolo set di macchine virtuali, durante la connessione alle condivisioni Premium. Ciò potrebbe ridurre il costo totale di proprietà riducendo il numero di macchine virtuali necessarie per l'esecuzione e la gestione di un carico di lavoro.

Per altre informazioni su SMB multicanale, vedere la documentazione di Windows.

Questa funzionalità offre maggiori vantaggi in termini di prestazioni per le applicazioni multithread, ma in genere non aiuta le applicazioni a thread singolo. Per altri dettagli, vedere la sezione Confronto prestazioni.

Limiti

SMB multicanale per le condivisioni file di Azure presenta attualmente le restrizioni seguenti:

  • Supportato solo nei client Windows che usano SMB 3.1.1. Assicurarsi che i sistemi operativi client SMB siano patch ai livelli consigliati.
  • Attualmente non supportato o consigliato per i client Linux.
  • Il numero massimo di canali è quattro. Per informazioni dettagliate, vedere qui.

Impostazione

SMB multicanale funziona solo quando la funzionalità è abilitata sia sul lato client (il client) che sul lato servizio (l'account di archiviazione di Azure).

Nei client Windows SMB multicanale è abilitato per impostazione predefinita. È possibile verificare la configurazione eseguendo il comando di PowerShell seguente:

Get-SmbClientConfiguration | Select-Object -Property EnableMultichannel

Nell'account di archiviazione di Azure è necessario abilitare SMB multicanale. Vedere Abilitare SMB multicanale.

Disabilitare SMB multicanale

Nella maggior parte degli scenari, in particolare i carichi di lavoro multithread, i client dovrebbero visualizzare prestazioni migliorate con SMB multicanale. Tuttavia, per alcuni scenari specifici, ad esempio carichi di lavoro a thread singolo o a scopo di test, è possibile disabilitare SMB multicanale. Per altri dettagli, vedere Confronto delle prestazioni.

Verificare che SMB multicanale sia configurato correttamente

  1. Creare una nuova condivisione file Premium o usare una condivisione Premium esistente.
  2. Verificare che il client supporti SMB multicanale (una o più schede di rete è abilitata per il ridimensionamento lato ricezione). Per altri dettagli, vedere la documentazione di Windows.
  3. Montare una condivisione file nel client.
  4. Generare il carico con l'applicazione. Uno strumento di copia, ad esempio robocopy /MT, o qualsiasi strumento di prestazioni, ad esempio Diskspd per leggere/scrivere file, può generare il caricamento.
  5. Aprire PowerShell come amministratore e usare il comando seguente: Get-SmbMultichannelConnection |fl
  6. Cercare le proprietà MaxChannels e CurrentChannels.

Screenshot of Get-SMBMultichannelConnection results.

Confronto delle prestazioni

Esistono due categorie di modelli di carico di lavoro di lettura/scrittura: a thread singolo e multithreading. La maggior parte dei carichi di lavoro usa più file, ma potrebbero esserci casi d'uso specifici in cui il carico di lavoro funziona con un singolo file in una condivisione. Questa sezione illustra i diversi casi d'uso e l'impatto sulle prestazioni per ognuno di essi. In generale, la maggior parte dei carichi di lavoro è multithread e distribuisce il carico di lavoro su più file, in modo da osservare miglioramenti significativi delle prestazioni con SMB multicanale.

  • Multithreading/più file: a seconda del modello di carico di lavoro, si noterà un miglioramento significativo delle prestazioni in operazioni di I/O di lettura e scrittura su più canali. I miglioramenti delle prestazioni variano da 2x a 4x in termini di operazioni di I/O al secondo, velocità effettiva e latenza. Per questa categoria, SMB multicanale deve essere abilitato per ottenere prestazioni ottimali.
  • File multithread/singolo: per la maggior parte dei casi d'uso in questa categoria, i carichi di lavoro trarranno vantaggio dall'abilitazione di SMB multicanale, soprattutto se il carico di lavoro ha una dimensione > di I/O media di circa 16.000. Alcuni scenari di esempio che traggono vantaggio da SMB multicanale sono il backup o il ripristino di un singolo file di grandi dimensioni. Un'eccezione in cui si potrebbe voler disabilitare SMB multicanale è se il carico di lavoro è elevato in operazioni di I/O di piccole dimensioni. In tal caso, si potrebbe osservare una leggera perdita di prestazioni pari a ~10%. A seconda del caso d'uso, valutare la possibilità di distribuire il carico tra più file o disabilitare la funzionalità. Per informazioni dettagliate, vedere la sezione Configurazione .
  • File a thread singolo o file singolo: per la maggior parte dei carichi di lavoro a thread singolo, esistono vantaggi minimi in termini di prestazioni a causa della mancanza di parallelismo. In genere si verifica una lieve riduzione delle prestazioni di ~10% se SMB multicanale è abilitato. In questo caso, è consigliabile disabilitare SMB multicanale, con un'unica eccezione. Se il carico di lavoro a thread singolo può distribuire il carico tra più file e usa in una dimensione di I/O media superiore (> ~16k), dovrebbe esserci un lieve vantaggio in termini di prestazioni da SMB multicanale.

Configurazione dei test delle prestazioni

Per i grafici di questo articolo, è stata usata la configurazione seguente: una singola macchina virtuale D32s v3 Standard con una singola scheda di interfaccia di rete abilitata per RSS con quattro canali. Il caricamento è stato generato usando diskspd.exe, con thread multipli con profondità di I/O pari a 10 e operazioni di I/O casuali con varie dimensioni di I/O.

Dimensione vCPU Memoria: GiB GiB di archiviazione temp (unità SSD) Numero massimo di dischi dati Memorizzazione nella cache e velocità effettiva temporanea: operazioni di I/O al secondo/Mbps (dimensioni della cache in GiB) Velocità effettiva massima del disco non memorizzato nella cache: IOPS/MBps Schede di interfaccia di rete max Larghezza di banda di rete prevista (Mbps)
Standard_D32s_v3 32 128 256 32 64000/512 (800) 51200/768 8 16000

Screenshot that shows the performance test configuration.

Multithreading/più file con SMB multicanale

Il caricamento è stato generato su 10 file con varie dimensioni di I/O. I risultati dei test di scalabilità orizzontale hanno mostrato miglioramenti significativi nei risultati dei test di IOPS e velocità effettiva con SMB multicanale abilitato. I diagrammi seguenti illustrano i risultati:

Diagram of performance.

Diagram of throughput performance.

  • In un'unica scheda di interfaccia di rete, per le letture, è stato osservato un aumento delle prestazioni di 2x-3x-3x e per le scritture, i guadagni di 3x-4x in termini di operazioni di I/O al secondo e velocità effettiva.
  • SMB multicanale ha consentito operazioni di I/O al secondo e velocità effettiva per raggiungere i limiti delle macchine virtuali anche con una singola scheda di interfaccia di rete e il limite di quattro canali.
  • Poiché la velocità effettiva in uscita (o le letture nell'archiviazione) non è a consumo, la velocità effettiva di lettura è stata in grado di superare il limite pubblicato della macchina virtuale di 16.000 Mbps (2 GiB/s). Il test ha ottenuto >2,7 GiB/s. I dati in ingresso (o scritture nell'archiviazione) sono ancora soggetti ai limiti delle macchine virtuali.
  • La distribuzione del carico su più file ha consentito miglioramenti sostanziali.

Un comando di esempio usato in questo test è:

diskspd.exe -W300 -C5 -r -w100 -b4k -t8 -o8 -Sh -d60 -L -c2G -Z1G z:\write0.dat z:\write1.dat z:\write2.dat z:\write3.dat z:\write4.dat z:\write5.dat z:\write6.dat z:\write7.dat z:\write8.dat z:\write9.dat .

Carichi di lavoro multithread/single file con SMB multicanale

Il caricamento è stato generato su un singolo file GiB di 128. Con SMB multicanale abilitato, il test di aumento delle prestazioni con file multithread/singolo ha mostrato miglioramenti nella maggior parte dei casi. I diagrammi seguenti illustrano i risultati:

Diagram of IOPS performance.

Diagram of single file throughput performance.

  • In una singola scheda di interfaccia di rete con dimensioni di I/O superiori (> ~16k), sono stati apportati miglioramenti significativi sia nelle letture che nelle scritture.
  • Per dimensioni di I/O più piccole, si è verificato un lieve impatto sulle prestazioni di circa il 10% con SMB multicanale abilitato. Questo problema può essere risolto distribuendo il carico su più file o disabilitando la funzionalità.
  • Le prestazioni sono ancora vincolate da limiti di file singoli.

Memorizzazione nella cache dei metadati per condivisioni file SMB Premium

La memorizzazione nella cache dei metadati è un miglioramento per le condivisioni file premium di Azure SMB per ridurre la latenza dei metadati, aumentare le operazioni di I/O al secondo disponibili e aumentare la velocità effettiva di rete. Questa funzionalità di anteprima migliora le API di metadati seguenti e può essere usata dai client Windows e Linux:

  • Creazione
  • Apertura
  • Chiusura
  • Elimina

Per eseguire l'onboarding, iscriversi all'anteprima pubblica e verranno forniti altri dettagli. Attualmente questa funzionalità di anteprima è disponibile solo per le condivisioni file SMB Premium (condivisioni file nel tipo di account di archiviazione File Archiviazione). Non sono previsti costi aggiuntivi associati all'uso di questa funzionalità.

Disponibilità a livello di area

Attualmente l'anteprima della memorizzazione nella cache dei metadati è disponibile solo nelle aree di Azure seguenti.

  • Australia orientale
  • Brasile meridionale
  • Francia meridionale
  • Germania centro-occidentale
  • Svizzera settentrionale
  • Emirati Arabi Uniti centrali
  • Emirati Arabi Uniti settentrionali
  • Stati Uniti centro-occidentali

Miglioramenti delle prestazioni con la memorizzazione nella cache dei metadati

La maggior parte dei carichi di lavoro o dei modelli di utilizzo che contengono metadati può trarre vantaggio dalla memorizzazione nella cache dei metadati. Per determinare se il carico di lavoro contiene metadati, è possibile usare Monitoraggio di Azure per suddividere le transazioni in base alla dimensione API.

I carichi di lavoro e i modelli di utilizzo tipici dei metadati includono:

  • Servizi Web/app
  • Attività DevOps
  • Indicizzazione/processi batch
  • Desktop virtuali con home directory o altri carichi di lavoro che interagiscono principalmente con molti file, directory o handle di piccole dimensioni

I diagrammi seguenti illustrano i potenziali risultati.

Ridurre la latenza dei metadati

Memorizzando nella cache i percorsi di file e directory per ricerche future, la memorizzazione nella cache dei metadati può ridurre la latenza nei file e nelle directory a cui si accede di frequente del 30% o più per i carichi di lavoro con un numero elevato di metadati su larga scala.By caching file and directory for future lookups, metadata caching can reduce la latency on frequently accessed files and directories by 30% or more for metadata-heavy workloads at scale.

Chart showing latency in milliseconds with and without metadata caching.

Aumentare le operazioni di I/O al secondo disponibili

La memorizzazione nella cache dei metadati può aumentare le operazioni di I/O al secondo disponibili di oltre il 60% per i carichi di lavoro con carichi di lavoro con carichi di lavoro pesanti su larga scala.

Chart showing available IOPS with and without metadata caching.

Aumentare la velocità effettiva di rete

La memorizzazione nella cache dei metadati può aumentare la velocità effettiva di rete di oltre il 60% per i carichi di lavoro con un numero elevato di metadati su larga scala.Metadata caching can increase network throughput by more than 60% for metadata-heavy workloads at scale.

Chart showing network throughput with and without metadata caching.

Passaggi successivi