Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo articolo illustra come risolvere il problema di utilizzo elevato della CPU nel server SMB.
Utilizzo elevato della CPU a causa di problemi di prestazioni dell'archiviazione
Archiviazione problemi di prestazioni possono causare un utilizzo elevato della CPU nei server SMB. Prima di risolvere i problemi, assicurarsi che l'aggiornamento cumulativo più recente sia installato nel server SMB per eliminare eventuali problemi noti in srv2.sys.
Nella maggior parte dei casi, si noterà il problema dell'utilizzo elevato della CPU nel processo di sistema. Prima di procedere, usare Esplora processi per assicurarsi che srv2.sys o ntfs.sys usi risorse cpu eccessive.
Scenario di rete dell'area di Archiviazione (SAN)
Nei livelli aggregati, le prestazioni SAN complessive potrebbero risultare ottimali. Tuttavia, quando si lavora ai problemi di SMB, il tempo di risposta delle singole richieste è ciò che conta di più.
In genere, questo problema può essere causato da una qualche forma di accodamento dei comandi in SAN. È possibile usare Perfmon per acquisire una traccia di Microsoft-Windows-StorPort e analizzarla per determinare in modo accurato la velocità di risposta dell'archiviazione.
Latenza di I/O del disco
La latenza I/O del disco è una misura del ritardo tra il tempo di creazione e completamento di una richiesta di I/O su disco.
La latenza di I/O misurata in Perfmon include tutto il tempo trascorso nei livelli hardware più il tempo impiegato nella coda del driver di porta Microsoft (Storport.sys per SCSI). Se i processi in esecuzione generano una coda StorPort di grandi dimensioni, la latenza misurata aumenta. Ciò è dovuto al fatto che L'I/O deve attendere prima che venga inviato ai livelli hardware.
In Perfmon, i contatori seguenti mostrano la latenza del disco fisico:
- "Oggetto prestazioni disco fisico" -> "Avg. Disk sec/Read counter" - Indica la latenza di lettura media.
- "Oggetto prestazioni disco fisico" -> "Contatore medio disco sec/scrittura" - Indica la latenza di scrittura media.
- "Oggetto prestazioni disco fisico" -> "Contatore medio disco/trasferimento" - Mostra le medie combinate sia per le letture che per le scritture.
L'istanza "_Total" è una media delle latenze per tutti i dischi fisici nel computer. Ognuna delle altre istanze rappresenta un singolo disco fisico.
Note
Non confondere questi contatori con Avg. Disk Transfer/sec. Questi sono contatori completamente diversi.
Stack di archiviazione di Windows
Questa sezione fornisce una breve spiegazione sullo stack di archiviazione di Windows.
Quando un'applicazione crea una richiesta di I/O, invia la richiesta al sottosistema I/O di Windows nella parte superiore dello stack. L'I/O passa quindi fino allo stack fino al sottosistema "Disco" hardware. Quindi, la risposta viaggia fino al backup. Durante questo processo, ogni livello esegue la funzione e quindi passa l'I/O al livello successivo.
Perfmon non crea dati sulle prestazioni al secondo. Utilizza invece i dati forniti da altri sottosistemi all'interno di Windows.
Per l'oggetto prestazioni disco fisico, i dati vengono acquisiti a livello di "Gestione partizioni" nello stack di archiviazione.
Quando si misurano i contatori menzionati nella sezione precedente, si misura tutto il tempo impiegato dalla richiesta al di sotto del livello "Gestione partizioni". Quando la richiesta di I/O viene inviata dal gestore di partizioni verso il basso nello stack, viene timestampata. Quando viene restituito, viene stampato di nuovo e viene calcolata la differenza di tempo. La differenza di tempo è la latenza.
In questo modo, si tiene conto del tempo dedicato ai componenti seguenti:
- Driver di classe: gestisce il tipo di dispositivo, ad esempio dischi, nastri e così via.
- Driver porta: gestisce il protocollo di trasporto, ad esempio SCSI, FC, SATA e così via.
- Driver Miniport del dispositivo: questo è il driver di dispositivo per l'adattatore Archiviazione. Viene fornito dal produttore dei dispositivi, ad esempio Raid Controller e FC HBA.
- Sottosistema disco: include tutto ciò che si trova sotto il driver Miniport del dispositivo. Questo può essere semplice come un cavo collegato a un singolo disco rigido fisico o complesso come una Storage Area Network. Se il problema è determinato a essere causato da questo componente, è possibile contattare il fornitore dell'hardware per ulteriori informazioni sulla risoluzione dei problemi.
Accodamento dischi
Esiste una quantità limitata di operazioni di I/O che un sottosistema del disco può accettare in un determinato momento. L'I/O in eccesso viene accodato fino a quando il disco non può accettare nuovamente I/O. Il tempo trascorso dalle operazioni di I/O nelle code al di sotto del livello "Gestione partizioni" viene tenuto conto nelle misurazioni della latenza del disco fisico Perfmon. Man mano che le code aumentano e le operazioni di I/O devono attendere più a lungo, aumenta anche la latenza misurata.
Al di sotto del livello "Gestione partizioni", sono presenti più code, come indicato di seguito:
- Coda driver porta Microsoft - CODA SCSIport o Storport
- Manufacturer Supplied Device Driver Queue - OEM Device Driver
- Code hardware, ad esempio coda del controller del disco, coda commutatori SAN, coda controller di matrice e coda del disco rigido
Si tiene conto anche del tempo trascorso dal disco rigido per la manutenzione attiva dell'I/O e del tempo di viaggio impiegato per tornare al livello "Gestione partizioni" da contrassegnare come completato.
Infine, è necessario prestare particolare attenzione alla coda del driver di porta (per i Storport.sys SCSI). Il driver porta è l'ultimo componente Microsoft a toccare un I/O prima di consegnarlo al driver Miniport del dispositivo fornito dal produttore.
Se il driver Miniport del dispositivo non può accettare più operazioni di I/O perché la coda o le code hardware sottostanti sono sature, inizieremo ad accumulare I/O nella coda dei driver di porta. Le dimensioni della coda del driver di porta Microsoft sono limitate solo dalla memoria di sistema disponibile (RAM) e possono crescere molto grandi. Questo causa una latenza misurata di grandi dimensioni.
CPU elevata causata dall'enumerazione delle cartelle
Per risolvere questo problema, disabilitare la funzionalità ABE (Access Based Enumeration).
Per determinare le condivisioni SMB abilitate, eseguire il cmdlet di PowerShell seguente:
Get-SmbShare | Select Name, FolderEnumerationMode
Unrestricted
= ABE disabilitata.
AccessBase
= ABE abilitata.
È possibile abilitare ABE in Server Manager. Passare a File e servizi di archiviazione>Condivisioni, fare clic con il pulsante destro del mouse sulla condivisione, selezionare Proprietà, andare su Impostazioni, quindi selezionare Abilita enumerazione basata sull'accesso.
Inoltre, è possibile ridurre ABELevel a un livello inferiore (1 o 2) per migliorare le prestazioni.
È possibile controllare le prestazioni del disco quando l'enumerazione è lenta aprendo la cartella in locale tramite una console o una sessione RDP.