Ottimizzazione delle prestazioni per i file server SMB

Considerazioni sulla configurazione SMB

Assicurarsi che le modalità di risparmio energia del BIOS e del sistema operativo siano impostate in base alle esigenze, che potrebbero includere la modalità Prestazioni elevate o lo stato C modificato. Assicurarsi che i driver di dispositivo di rete e di archiviazione più recenti, resilienti e più veloci siano installati prima di configurare qualsiasi ottimizzazione SMB (Server Message Block).

Non abilitare servizi o funzionalità non richiesti dal file server e dai client. Valutare la possibilità di disabilitare servizi o funzionalità non necessari, ad esempio:

  • Memorizzazione nella cache lato client
  • Mini filtri del file system
  • Filtri firewall
  • IPSEC
  • Compressione NTFS
  • Crittografia NTFS
  • Attività pianificate
  • Search service
  • Crittografia SMB
  • Firma SMB
  • Teredo

La copia di file è un'operazione comune eseguita in un file server. Windows Server include diverse utilità di copia file predefinite che è possibile eseguire tramite un prompt dei comandi. Robocopy è consigliato per queste operazioni. Windows Server 2008 R2 ha introdotto l'opzione /mt Robocopy che migliora notevolmente la velocità dei trasferimenti di file remoti usando più thread durante la copia di più file di piccole dimensioni. È anche consigliabile usare l'opzione per ridurre l'output /log della console reindirizzando i log a un dispositivo NUL o a un file. Quando si usa xcopy, è consigliabile aggiungere le /q opzioni e /k ai parametri esistenti. L'opzione precedente riduce il sovraccarico della CPU riducendo l'output della console e quest'ultimo riduce il traffico di rete.

Ottimizzazione delle prestazioni SMB

Le prestazioni del file server e le ottimizzazioni disponibili dipendono dal protocollo SMB negoziato tra ogni client e il server e dalle funzionalità del file server distribuite. La versione più recente del protocollo attualmente disponibile è SMB 3.1.1 in Windows Server 2022, Windows Server 2016 e Windows 10. È possibile controllare quale versione di SMB è in uso nella rete usando Windows PowerShell Get-SMBConnection nei client e Get-SMBSession | FL nei server.

Famiglia di protocolli SMB 3.0

SMB 3.0 è stato introdotto in Windows Server 2012 e ulteriormente migliorato in Windows Server 2012 R2 (SMB 3.02) e Windows Server 2016 (SMB 3.1.1). Questa versione ha introdotto tecnologie che potrebbero migliorare significativamente le prestazioni e la disponibilità del file server. Per altre info, vedi SMB in Windows Server 2012 e 2012 R2 2012 e Novità di SMB 3.1.1.

SMB diretto

SMB diretto ha introdotto la possibilità di usare interfacce di rete RDMA per una velocità effettiva elevata con bassa latenza e un utilizzo ridotto della CPU.

Ogni volta che SMB rileva una rete con supporto per RDMA, tenta automaticamente di usare la funzionalità RDMA. Se il client SMB non riesce a connettersi usando il percorso RDMA, esegue il fallback all'uso delle connessioni TCP/IP. Tutte le interfacce RDMA compatibili con SMB diretto devono implementare anche uno stack TCP/IP e SMB multicanale lo riconosce.

SMB diretto non è necessario in alcuna configurazione SMB, ma è sempre consigliato per gli utenti che vogliono una latenza inferiore e un utilizzo inferiore della CPU.

Per altre informazioni su SMB diretto, vedere Migliorare le prestazioni di un file server con SMB diretto.

SMB multicanale

SMB multicanale consente ai file server di usare più connessioni di rete contemporaneamente e offre una maggiore velocità effettiva.

Per altre informazioni su SMB multicanale, vedere Distribuire SMB multicanale.

Scale-Out SMB

La scalabilità orizzontale SMB consente a SMB 3.0 in una configurazione del cluster di visualizzare una condivisione in tutti i nodi di un cluster. Questa configurazione attiva/attiva consente di ridimensionare ulteriormente i cluster di file server, senza una configurazione complessa con più volumi, condivisioni e risorse del cluster. La larghezza di banda massima della condivisione è la larghezza di banda totale di tutti i nodi del cluster file server. La larghezza di banda totale non è più limitata dalla larghezza di banda di un singolo nodo del cluster, ma dipende invece dalla funzionalità del sistema di archiviazione di backup. È possibile aumentare la larghezza di banda totale mediante l'aggiunta di nodi.

Per altre informazioni sulla scalabilità orizzontale SMB, vedere Panoramica diScale-Out File Server per dati applicativi e il post di blog Scalare orizzontalmente o no, questo è il problema.

Contatori delle prestazioni per SMB 3.0

I contatori delle prestazioni SMB seguenti sono stati introdotti in Windows Server 2012, sono considerati il set di base di contatori quando si monitora l'utilizzo delle risorse di SMB 2 e versioni successive. Registrare i contatori delle prestazioni su un registro locale grezzo di contatori delle prestazioni (.blg). È meno costoso raccogliere tutte le istanze usando il carattere jolly (*), quindi estrarre istanze specifiche durante la post-elaborazione usando Relog.exe.

  • Condivisioni del client SMB

    Questi contatori visualizzano informazioni sulle condivisioni file nel server a cui accedono i client che usano SMB 2.0 o versioni successive.

    Se hai familiarità con i normali contatori dei dischi in Windows, potresti notare una certa somiglianza. Non è per caso. I contatori delle prestazioni delle condivisioni per i client SMB sono stati progettati per corrispondere esattamente ai contatori dei dischi. In questo modo è possibile riutilizzare facilmente qualsiasi materiale sussidiario sull'ottimizzazione delle prestazioni del disco dell'applicazione attualmente disponibile. Per altre informazioni sul mapping dei contatori, vedere il blog Per share client performance counters (Contatori delle prestazioni client per condivisione).

  • Condivisioni del server SMB

    Questi contatori visualizzano informazioni sulle condivisioni file SMB 2.0 o successive nel server.

  • Sessioni del server SMB

    Questi contatori visualizzano informazioni sulle sessioni del server SMB che usano SMB 2.0 o versione successiva.

    L'attivazione dei contatori sul lato server (condivisioni server o sessioni server) potrebbe avere un impatto significativo sulle prestazioni per carichi di lavoro di I/O elevati.

  • Riprendi filtro chiave

    Questi contatori visualizzano informazioni sul filtro chiave di ripresa.

  • Connessione diretta SMB

    Questi contatori misurano diversi aspetti dell'attività di connessione. Un computer può avere più connessioni SMB dirette. I contatori SMB Direct Connection rappresentano ogni connessione come coppia di indirizzi IP e porte. Il primo indirizzo IP e la porta rappresentano l'endpoint locale della connessione e il secondo indirizzo IP e la porta rappresentano l'endpoint remoto della connessione.

  • Relazioni tra contatori delle prestazioni di dischi fisici, SMB, CSV FS

    Per altre informazioni sul modo in cui sono correlati i contatori di Disco fisico, SMB e CSV FS (file system), vedere il post di blog seguente: Cluster Shared Volume Performance Counters (Contatori delle prestazioni del volume condiviso del cluster).

Parametri di ottimizzazione per i file server SMB

Le impostazioni del Registro di sistema seguenti REG_DWORD possono influire sulle prestazioni dei file server SMB:

  • Smb2CreditsMin e Smb2CreditsMax

    HKLM\System\CurrentControlSet\Services\LanmanServer\Parameters\Smb2CreditsMin
    
    HKLM\System\CurrentControlSet\Services\LanmanServer\Parameters\Smb2CreditsMax
    

    Le impostazioni predefinite sono rispettivamente 512 e 8192 per Windows Server. Questi parametri consentono al server di limitare dinamicamente la concorrenza delle operazioni client entro i limiti specificati. Alcuni client potrebbero ottenere una maggiore velocità effettiva con limiti di concorrenza più elevati, ad esempio la copia di file su collegamenti a larghezza di banda elevata e a latenza elevata. Questi valori predefiniti si applicano a Windows Server, non a Windows.

    Tip

    Prima di Windows 10 e Windows Server 2016, il numero di crediti concessi al client varia in modo dinamico tra Smb2CreditsMin e Smb2CreditsMax in base a un algoritmo che ha tentato di determinare il numero ottimale di crediti da concedere in base alla latenza di rete e all'utilizzo del credito. In Windows 10 e Windows Server 2016 il server SMB è stato modificato in modo da concedere in modo incondizionato crediti su richiesta fino al numero massimo di crediti configurato. Come parte di questa modifica, il meccanismo di limitazione del credito, che riduce le dimensioni della finestra di credito di ogni connessione quando il server è sotto pressione di memoria, è stato rimosso. L'evento di memoria insufficiente del kernel che ha attivato la limitazione viene segnalato solo quando il server ha così poca memoria (< pochi MB) da risultare inutile. Poiché il server non riduce più le finestre di credito, l'impostazione Smb2CreditsMin non è più necessaria e ora viene ignorata.

    È possibile monitorare le condivisioni client SMB\Stalli di credito /sec per verificare se sono presenti problemi con i crediti.

  • AdditionalCriticalWorkerThreads

    HKLM\System\CurrentControlSet\Control\Session Manager\Executive\AdditionalCriticalWorkerThreads
    

    Il valore predefinito è 0, il che significa che non vengono aggiunti thread di lavoro kernel più critici. Questo valore influisce sul numero di thread usati dalla cache del file system per le richieste read-ahead e write-behind. La generazione di questo valore può consentire un numero maggiore di operazioni di I/O in coda nel sottosistema di archiviazione e può migliorare le prestazioni di I/O, in particolare nei sistemi con molti processori logici e hardware di archiviazione potente.

    Note

    Questa impostazione si applica principalmente ai sistemi operativi Windows 7, Windows Server 2008 R2 e versioni precedenti. Nei sistemi operativi successivi, mentre Gestione cache utilizza ancora indirettamente questo valore, Gestione cache non crea thread di lavoro dedicati in sistemi operativi successivi; piuttosto, questo valore influenza indirettamente il numero di elementi di lavoro di ogni tipo (ruoli di lavoro generici, writer lazy e così via) Gestione cache allocherà per l'invio successivo al pool di thread del kernel.

    Tip

    Considerare la possibilità di aumentare il valore se i dati sporchi del gestore della cache (contatore delle prestazioni Cache\Dirty Pages) superano approssimativamente i ~25% di memoria o se il sistema esegue numerose operazioni di I/O sincrone in lettura.

  • MaxThreadsPerNumaNode

    HKLM\System\CurrentControlSet\Services\LanmanServer\Parameters\MaxThreadsPerNumaNode
    

    Il valore predefinito è 20. L'aumento di questo valore genera il numero di thread che il file server può usare per gestire le richieste simultanee. Quando è necessario gestire un numero elevato di connessioni attive, l'aumento del valore potrebbe migliorare le prestazioni quando i driver di filtro di terze parti inefficienti influiscono sulle operazioni di I/O. È preferibile installare driver di filtro di terze parti aggiornati e driver di stampa che elaborano I/O in modo più efficiente anziché modificare questa impostazione.

    Tip

    Un'indicazione che potrebbe essere necessario aumentare il valore è se le code di lavoro SMB2 diventano relativamente più grandi (il contatore delle prestazioni 'Server Code di lavoro\Lunghezza coda\SMB2 NonBlocking *' è costantemente superiore a ~100).

    Note

    In SMB1 e in Windows Server 2012 e Windows Server 2008, MaxThreadsPerQueue è stato usato per controllare questa impostazione. SMB1 è deprecato e non è più installato e questa impostazione è ora inattiva.

  • AsynchronousCredits

    HKLM\System\CurrentControlSet\Services\LanmanServer\Parameters\AsynchronousCredits
    

    Il valore predefinito è 512. Questo parametro limita il numero di comandi SMB asincroni simultanei consentiti in una singola connessione. Alcuni casi, ad esempio quando è presente un server front-end con un server IIS back-end, richiedono una grande quantità di concorrenza (in particolare per le richieste di notifica delle modifiche ai file). Il valore di questa voce può essere aumentato per supportare questi casi. Il valore predefinito è per Windows Server, non per Windows.

  • RemoteFileDirtyPageThreshold

    HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\RemoteFileDirtyPageThreshold
    

    Il valore predefinito è 5 GB. Questo valore determina il numero massimo di pagine sporche nella cache (per ogni file) per una scrittura remota prima dell'esecuzione di un flush inline. Non è consigliabile modificare questo valore a meno che il sistema non subisca rallentamenti coerenti durante operazioni di scrittura remote pesanti. Questo comportamento di rallentamento si può in genere vedere dove il client ha prestazioni di I/O di archiviazione più veloci rispetto al server remoto. La modifica dell'impostazione viene applicata al server. Client e server fanno riferimento all'architettura del sistema distribuito, non a sistemi operativi specifici; Ad esempio, una copia di dati in un altro Windows Server tramite SMB comporta comunque un client SMB e un server SMB. Per altre informazioni, vedere Risolvere i problemi di prestazioni di Cache e Memory Manager.

Esempio di ottimizzazione del server SMB

Le impostazioni seguenti possono ottimizzare un computer per le prestazioni del file server in molti casi. Le impostazioni non sono ottimali o appropriate in tutti i computer. È consigliabile valutare l'impatto delle singole impostazioni prima di applicarle.

Parameter Value Default
AdditionalCriticalWorkerThreads 64 0

Contatori di monitoraggio delle prestazioni del client SMB

Per ulteriori informazioni sui contatori del client SMB, vedere Suggerimento per il file server di Windows Server 2012: I nuovi contatori delle prestazioni per client SMB per condivisione offrono informazioni dettagliate.