Leistungsoptimierung für SMB-Dateiserver

Überlegungen zur SMB-Konfiguration

Aktivieren Sie keine Dienste oder Funktionen, die Ihr Dateiserver und Ihre Clients nicht benötigen. Unnötige Dienste oder Funktionen sind beispielsweise SMB-Signierung, clientseitiges Zwischenspeichern, Dateisystem-Minifilter, Suchdienst, geplante Aufgaben, NTFS-Verschlüsselung, NTFS-Komprimierung, IPSEC, Firewall-Filter, Teredo oder SMB-Verschlüsselung.

Stellen Sie sicher, dass die Energieverwaltungsmodi des BIOS und des Betriebssystems wie erforderlich eingestellt sind, was den Hochleistungsmodus oder den geänderten C-State umfassen kann. Stellen Sie sicher, dass die neuesten, stabilsten und schnellsten Speicher- und Netzwerkgerätetreiber installiert sind.

Das Kopieren von Dateien ist ein gängiger Vorgang, der auf einem Dateiserver ausgeführt wird. Windows Server verfügt über mehrere integrierte Hilfsprogramme zum Kopieren von Dateien, die Sie mithilfe einer Eingabeaufforderung ausführen können. Robocopy wird empfohlen. Die in Windows Server 2008 R2 eingeführte Option /mt von Robocopy kann die Geschwindigkeit von Remote-Dateiübertragungen durch die Verwendung mehrerer Threads beim Kopieren mehrerer kleiner Dateien erheblich verbessern. Es wird auch empfohlen, die Option /log zu verwenden, um die Konsolenausgabe zu reduzieren, indem Protokolle an ein NUL-Gerät oder eine Datei umgeleitet werden. Wenn Sie Xcopy verwenden, wird empfohlen, den vorhandenen Parametern die Optionen /q und /k hinzuzufügen. Die erstere Option reduziert den CPU-Mehraufwand, indem die Konsolenausgabe reduziert wird, während die letztere den Netzwerkdatenverkehr reduziert.

SMB-Leistungsoptimierung

Die Leistung des Dateiservers und die verfügbaren Optimierungen hängen vom SMB-Protokoll ab, das zwischen jedem Client und dem Server ausgehandelt wird, und von den bereitgestellten Dateiserverfeatures. Die derzeit höchste verfügbare Protokollversion ist SMB 3.1.1 in Windows Server 2022, Windows Server 2016 und Windows 10. Sie können überprüfen, welche Version von SMB in Ihrem Netzwerk verwendet wird, indem Sie Windows PowerShell Get-SMBConnection auf Clients und Get-SMBSession | FL auf Servern verwenden.

SMB 3.0-Protokoll-Familie

SMB 3.0 wurde in Windows Server 2012 eingeführt und in Windows Server 2012 R2 (SMB 3.02) und Windows Server 2016 (SMB 3.1.1) weiter verbessert. Mit dieser Version wurden Technologien eingeführt, die die Leistung und Verfügbarkeit des Dateiservers erheblich verbessern können. Weitere Informationen finden Sie unter SMB in Windows Server 2012 und 2012 R2 2012 und Neuigkeiten in SMB 3.1.1.

SMB Direct

SMB Direct hat die Möglichkeit eingeführt, RDMA-Netzwerkschnittstellen für hohen Durchsatz mit geringer Latenz und geringer CPU-Auslastung zu verwenden.

Wenn SMB ein RDMA-fähiges Netzwerk erkennt, versucht es automatisch, die RDMA-Funktion zu verwenden. Wenn der SMB-Client jedoch aus irgendeinem Grund keine Verbindung über den RDMA-Pfad herstellen kann, verwendet er stattdessen weiterhin TCP/IP-Verbindungen. Alle RDMA-Schnittstellen, die mit SMB Direct kompatibel sind, sind erforderlich, um auch einen TCP/IP-Stapel zu implementieren, und SMB Multichannel ist sich dessen bewusst.

SMB Direct ist in keiner SMB-Konfiguration erforderlich, wird jedoch immer für diejenigen empfohlen, die eine geringere Wartezeit und eine geringere CPU-Auslastung wünschen.

Weitere Informationen zu SMB Direct finden Sie unter Optimieren der Leistung von Dateiservern mit SMB Direct.

SMB Multichannel

SMB Multichannel ermöglicht Dateiservern die gleichzeitige Verwendung mehrerer Netzwerkverbindungen und bietet einen höheren Durchsatz.

Weitere Informationen zu SMB Multichannel finden Sie unter Bereitstellen von SMB Multichannel.

Horizontale SMB-Skalierung

Horizontale SMB-Skalierung ermöglicht es SMB 3.0 in einer Clusterkonfiguration, eine Freigabe auf allen Knoten eines Clusters anzuzeigen. Diese Aktiv/Aktiv-Konfiguration ermöglicht die weitere Skalierung von Datei-Serverclustern ohne eine komplexe Konfiguration mit mehreren Volumes, Freigaben und Cluster-Ressourcen. Die maximale Freigabebandbreite entspricht der Gesamtbandbreite aller Dateiserver-Clusterknoten. Die Gesamtbandbreite ist nicht mehr durch die Bandbreite eines einzelnen Clusterknotens begrenzt, sondern hängt vielmehr von der Funktion des unterstützenden Speichersystems ab. Sie können die Gesamtbandbreite erhöhen, indem Sie Knoten hinzufügen.

Weitere Informationen zu SMB-Scale-Out finden Sie unter Übersicht über Dateiserver mit horizontaler Skalierung von Anwendungsdaten und im Blogbeitrag Horizontal skalieren oder nicht horizontal skalieren, das ist hier die Frage.

Leistungsindikatoren für SMB 3.0

Die folgenden SMB-Leistungsindikatoren wurden in Windows Server 2012 eingeführt. Sie gelten als der Basissatz von Leistungsindikatoren, wenn Sie die Ressourcennutzung von SMB 2 und höheren Versionen überwachen. Protokollieren Sie die Leistungsindikatoren in einem lokalen unformatierten Leistungsindikator-Protokoll (.blg). Es ist kostengünstiger, alle Instanzen mithilfe des Platzhalterzeichens (*) zu sammeln und dann bestimmte Instanzen während der Nachverarbeitung mithilfe von Relog.exe zu extrahieren.

  • SMB-Clientfreigaben

    Diese Leistungsindikatoren zeigen Informationen zu Dateifreigaben auf dem Server an, auf die ein Client zugreift, der SMB 2.0 oder höhere Versionen verwendet.

    Wenn Sie mit den regulären Datenträgerindikatoren in Windows vertraut sind, bemerken Sie möglicherweise eine gewisse Ähnlichkeit. Das ist kein Zufall. Die Leistungsindikatoren für SMB-Clientfreigaben wurden so konzipiert, dass sie genau mit den Datenträgerindikatoren übereinstimmen. Auf diese Weise können Sie alle Anleitungen zur Optimierung der Anwendungsdatenträgerleistung, die Sie derzeit haben, problemlos wiederverwenden. Weitere Informationen zur Zählerzuordnung finden Sie im Blog zu Client-Leistungsindikatoren pro Freigabe.

  • SMB-Serverfreigaben

    Diese Leistungsindikatoren zeigen Informationen zu Dateifreigaben SMB 2.0 oder höher auf dem Server an.

  • SMB-Serversitzungen

    Diese Leistungsindikatoren zeigen Informationen zu SMB-Serversitzungen an, die SMB 2.0 oder höher verwenden.

    Das Aktivieren von Leistungsindikatoren auf der Serverseite (Serverfreigaben oder Serversitzungen) kann erhebliche Auswirkungen auf die Leistung bei hohen E/A-Workloads haben.

  • Filter „Fortsetzungsschlüssel“

    In diesen Leistungsindikatoren werden Informationen zum Filter „Fortsetzungsschlüssel“ angezeigt.

  • SMB Direct-Verbindung

    Diese Indikatoren messen verschiedene Aspekte der Verbindungsaktivität. Ein Computer kann über mehrere SMB Direct-Verbindungen verfügen. SMB Direct-Verbindungszähler stellen jede Verbindung als Paar aus IP-Adressen und Ports dar, wobei die erste IP-Adresse und der erste Port den lokalen Endpunkt der Verbindung und die zweite IP-Adresse und der zweite Port den Remoteendpunkt der Verbindung darstellen.

  • Beziehungen zwischen physischem Datenträger, SMB und CSV FS-Leistungsindikatoren

    Weitere Informationen dazu, wie Leistungsindikatoren für physische Datenträger, SMB und CSV FS (Dateisystem) zusammenhängen, finden Sie im folgenden Blogbeitrag: Leistungsindikatoren für freigegebene Clustervolumes.

Optimierungsparameter für SMB-Dateiserver

Die folgenden REG_DWORD-Registrierungseinstellungen können sich auf die Leistung von SMB-Dateiservern auswirken:

  • Smb2CreditsMin und Smb2CreditsMax

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

    Die Standardwerte sind 512 bzw. 8192 für Windows Server. Diese Parameter ermöglichen es dem Server, die Parallelität von Clientvorgängen innerhalb der angegebenen Grenzen dynamisch zu drosseln. Einige Clients können einen erhöhten Durchsatz mit höheren Parallelitätsgrenzwerten erzielen, z. B. das Kopieren von Dateien über Verbindungen mit hoher Bandbreite und hoher Latenz. Diese Standardwerte gelten für Windows Server, nicht für Windows.

    Tipp

    Vor Windows 10 und Windows Server 2016 variierte die Anzahl der dem Client gewährten Guthaben dynamisch zwischen Smb2CreditsMin und Smb2CreditsMax, basierend auf einem Algorithmus, der versuchte, die optimale Anzahl der zu gewährenden Krediten basierend auf Netzwerklatenz und Kreditnutzung zu bestimmen. In Windows 10 und Windows Server 2016 wurde der SMB-Server geändert, um Guthaben auf Anforderung bedingungslos bis zur konfigurierten maximalen Anzahl an Guthaben zu gewähren. Im Rahmen dieser Änderung wurde der Kredit-Drosselungsmechanismus entfernt, der die Größe des Guthaben-Fensters jeder Verbindung reduziert, wenn der Server unter Speicherauslastung steht. Das Ereignis mit geringem Speicher des Kernels, das die Drosselung auslöste, wird nur signalisiert, wenn der Server so wenig Speicher hat (< wenige MB), dass er unbrauchbar ist. Da der Server die Guthaben-Fenster nicht mehr verkleinern kann, ist die Smb2CreditsMin-Einstellung nicht mehr erforderlich und wird nun ignoriert.

    Sie können SMB-Clientfreigaben\Credit Stalls /Sec überwachen, um festzustellen, ob Probleme mit Guthaben vorliegen.

  • AdditionalCriticalWorkerThreads

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

    Der Standardwert ist 0, was bedeutet, dass keine weiteren kritischen Kernel-Arbeitsthreads hinzugefügt werden. Dieser Wert wirkt sich auf die Anzahl der Threads aus, die der Dateisystemcache für Read-Ahead- und Write-Behind-Anforderungen verwendet. Das Erhöhen dieses Werts kann mehr E/A-Warteschlangen im Speichersubsystem ermöglichen und die E/A-Leistung verbessern, insbesondere auf Systemen mit vielen logischen Prozessoren und leistungsstarker Speicherhardware.

    Hinweis

    Diese Einstellung gilt hauptsächlich für Windows 7, Windows Server 2008 R2 und ältere Betriebssysteme. In späteren Betriebssystemen verbraucht Cache Manager diesen Wert zwar immer noch indirekt, aber Cache Manager erstellt in späteren Betriebssystemen keine dedizierten Arbeitsthreads mehr. Dieser Wert beeinflusst vielmehr indirekt die Anzahl der Arbeitselemente jedes Typs (generische Worker, Lazy Writer, usw.), die Cache Manager wird für eine spätere Übermittlung an den Kernelthreadpool zuweist.

    Tipp

    Der Wert muss möglicherweise erhöht werden, wenn die Menge an fehlerhaften Cache-Manager-Daten (Leistungsindikator Cache\Dirty Pages) zunimmt, um einen großen Teil (über ~25 %) des Speichers zu belegen oder wenn das System viele synchrone E/A-Lesevorgänge ausführt.

  • MaxThreadsPerNumaNode

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

    Der Standardwert ist 20. Durch Erhöhen dieses Werts wird die Anzahl der Threads erhöht, die der Dateiserver verwenden kann, um gleichzeitige Anforderungen zu bedienen. Wenn eine große Anzahl aktiver Verbindungen bedient werden muss, kann eine Erhöhung des Wertes die Leistung verbessern, wenn ineffiziente Filtertreiber von Drittanbietern die E/A beeinträchtigen. Es ist besser, aktualisierte Filtertreiber und Drucktreiber von Drittanbietern zu installieren, die E/A effizienter verarbeiten, anstatt diese Einstellung zu ändern.

    Tipp

    Ein Hinweis darauf, dass der Wert möglicherweise erhöht werden muss, ist, wenn die SMB2-Warteschlangen sehr groß werden (d.h. der Leistungszähler 'Server Work Queues\Queue Length\SMB2 NonBlocking *' liegt konstant über ~100).

    Hinweis

    In SMB1 und in Windows Server 2012 und Windows Server 2008 wurde MaxThreadsPerQueue zur Steuerung dieser Einstellung verwendet. SMB1 ist veraltet und wird nicht mehr installiert, und diese Einstellung selbst ist nicht mehr gültig.

  • AsynchronousCredits

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

    Der Standardwert liegt bei 512. Dieser Parameter begrenzt die Anzahl gleichzeitiger asynchroner SMB-Befehle, die für eine einzelne Verbindung zulässig sind. In einigen Fällen (z. B. wenn ein Front-End-Server mit einem Back-End-IIS-Server verbunden ist) ist ein hohes Maß an Parallelität erforderlich (insbesondere bei Anforderungen zur Benachrichtigung über Dateiänderungen). Der Wert dieses Eintrags kann erhöht werden, um diese Fälle zu unterstützen. Der Standardwert gilt für Windows Server, nicht für Windows.

  • RemoteFileDirtyPageThreshold

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

Der Standardwert ist 5 GB. Dieser Wert bestimmt die maximale Anzahl der fehlerhaften Seiten im Cache (auf Dateibasis) für einen Remote-Schreibvorgang, bevor ein Inline-Flush durchgeführt wird. Wir empfehlen nicht, diesen Wert zu ändern, es sei denn, das System wird bei umfangreichen Remote-Schreibvorgängen ständig verlangsamt. Dieses Verlangsamungsverhalten tritt in der Regel auf, wenn der Client eine schnellere E/A-Speicherleistung aufweist als der Remoteserver. Die Einstellungsänderung wird auf den Server angewendet. Client und Server beziehen sich auf die Architektur des verteilten Systems, nicht auf bestimmte Betriebssysteme. Beispielsweise würde ein Windows Server, der Daten über SMB auf einen anderen Windows Server kopiert, weiterhin einen SMB-Client und einen SMB-Server umfassen. Weitere Informationen finden Sie unter Problembehandlung bei Leistungsproblemen des Cache und Speicher-Managers.

Beispiel für die SMB-Serveroptimierung

Die folgenden Einstellungen können einen Computer in vielen Fällen für die Leistung des Dateiservers optimieren. Die Einstellungen sind nicht für alle Computer optimal oder angemessen. Sie sollten die Auswirkungen der einzelnen Einstellungen vor dem Anwenden überprüfen.

Parameter Wert Standard
AdditionalCriticalWorkerThreads 64 0

Leistungsindikatoren für den SMB-Client

Weitere Informationen zu SMB-Clientindikatoren finden Sie unter Windows Server 2012-Dateiserver-Tipp: Neue Leistungsindikatoren für SMB-Clients pro Freigabe bieten hervorragende Einblicke.