Leistungsoptimierung für SMB-Dateiserver

Überlegungen zur SMB-Konfiguration

Aktivieren Sie keine Dienste oder Features, die ihr Dateiserver und Clients nicht benötigen. Dazu gehören SMB-Signierung, clientseitiges Zwischenspeichern, Dateisystem-Minifilter, Suchdienst, geplante Aufgaben, NTFS-Verschlüsselung, NTFS-Komprimierung, IPSEC, Firewallfilter, Teredo und SMB-Verschlüsselung.

Stellen Sie sicher, dass die Energieverwaltungsmodi BIOS und Betriebssystem nach Bedarf festgelegt sind, z. B. der Modus "Hohe Leistung" oder der geänderte C-Zustand. 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 über eine Eingabeaufforderung ausführen können. Robocopy wird empfohlen. In Windows Server 2008 R2 eingeführt, kann die Option /mt von Robocopy die Geschwindigkeit bei Remotedateiübertragungen erheblich verbessern, indem mehrere Threads beim Kopieren mehrerer kleiner Dateien verwendet werden. Es wird auch empfohlen, die Option /log zu verwenden, um die Konsolenausgabe zu reduzieren, indem Sie Protokolle an ein NUL-Gerät oder eine Datei umleiten. Wenn Sie Xcopy verwenden, wird empfohlen, den vorhandenen Parametern die Optionen /q und /k hinzuzufügen. Die erste Option reduziert den CPU-Mehraufwand, indem die Konsolenausgabe reduziert wird, und die zweite Option reduziert den Netzwerkdatenverkehr.

SMB-Leistungsoptimierung

Die Leistung des Dateiservers und die verfügbaren Optimierungen hängen vom SMB-Protokoll ab, das zwischen den einzelnen Clients und dem Server ausgehandelt wird, sowie von den bereitgestellten Dateiserverfeatures. Die höchste derzeit 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.

SMB 3.0-Protokollfamilie

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 Neuerungen 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, wird automatisch versucht, die RDMA-Funktion zu verwenden. Wenn der SMB-Client jedoch aus irgendeinem Grund keine Verbindung über den RDMA-Pfad herstellen kann, werden stattdessen einfach weiterhin TCP/IP-Verbindungen verwendet. Alle RDMA-Schnittstellen, die mit SMB Direct kompatibel sind, müssen auch einen TCP/IP-Stapel implementieren, und SMB Multichannel ist sich dessen bewusst.

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

Weitere Informationen zu SMB Direct finden Sie unter Verbessern der Leistung eines Dateiservers 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.

SMB-Scale-Out

Mit der SMB-Skalierung kann SMB 3.0 in einer Clusterkonfiguration eine Freigabe auf allen Knoten eines Clusters anzeigen. Diese Aktiv/Aktiv-Konfiguration ermöglicht die weitere Skalierung von Dateiserverclustern ohne eine komplexe Konfiguration mit mehreren Volumes, Freigaben und Clusterressourcen. Die maximale Freigabebandbreite ist die Gesamtbandbreite aller Dateiserverclusterknoten. Die Gesamtbandbreite wird nicht mehr durch die Bandbreite eines einzelnen Clusterknotens beschränkt, sondern hängt von der Funktion des unterstützungsfähigen Speichersystems ab. Sie können die Gesamtbandbreite erhöhen, indem Sie Knoten hinzufügen.

Weitere Informationen zu SMB Scale-Out finden Sie unter Dateiserver mit horizontaler Skalierung for Application Data Overview (Übersicht über Anwendungsdaten ) und im Blogbeitrag To scale out or not to scale out, that is the question (So skalieren Sie hoch- oder nicht hochskaliert, das ist die Frage).

Leistungsindikatoren für SMB 3.0

Die folgenden SMB-Leistungsindikatoren wurden in Windows Server 2012 eingeführt und gelten als Basissatz von Leistungsindikatoren, wenn Sie die Ressourcennutzung von SMB 2 und höheren Versionen überwachen. Protokollieren Sie die Leistungsindikatoren in einem lokalen, unformatierten Leistungsindikatorprotokoll (BLG). Es ist kostengünstiger, alle Instanzen mithilfe des Platzhalterzeichens (*) zu erfassen 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 mit SMB 2.0 oder höheren Versionen zugreift.

    Wenn Sie mit den regulären Datenträgerzählern in Windows vertraut sind, stellen Sie möglicherweise eine bestimmte Ähnlichkeit fest. Dies ist kein Zufall. Die Leistungsindikatoren der SMB-Clientfreigaben wurden so entworfen, dass sie genau mit den Datenträgerzählern übereinstimmen. Auf diese Weise können Sie einfach alle Derzeit verfügbaren Anleitungen zur Leistungsoptimierung von Anwendungsdatenträgern wiederverwenden. Weitere Informationen zur Leistungsindikatorzuordnung finden Sie im Blog Zu Clientleistungsindikatoren pro Freigabe.

  • SMB-Serverfreigaben

    Diese Leistungsindikatoren zeigen Informationen zu den SMB 2.0- oder höheren Dateifreigaben 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 serverseitiger Seite (Serverfreigaben oder Serversitzungen) kann erhebliche Auswirkungen auf die Leistung bei hohen E/A-Workloads haben.

  • Schlüsselfilter fortsetzen

    Diese Leistungsindikatoren zeigen Informationen zum Schlüsselfilter fortsetzen an.

  • Direkte SMB-Verbindung

    Diese Leistungsindikatoren messen verschiedene Aspekte der Verbindungsaktivität. Ein Computer kann über mehrere direkte SMB-Verbindungen verfügen. Die Leistungsindikatoren für die direkte SMB-Verbindung stellen jede Verbindung als Paar von 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 physischen Datenträgern, SMB und CSV FS-Leistungsindikatoren

    Weitere Informationen zur Beziehung zwischen Leistungsindikatoren für physische Datenträger, SMB und CSV FS (Dateisystem) finden Sie im folgenden Blogbeitrag: Freigegebenes Clustervolume Leistungsindikatoren.

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. Mit diesen Parametern kann der Server die Parallelität des Clientvorgangs innerhalb der angegebenen Grenzen dynamisch drosseln. Einige Clients erreichen möglicherweise einen höheren Durchsatz mit höheren Parallelitätsgrenzwerten, z. B. das Kopieren von Dateien über Links mit hoher Bandbreite und hoher Latenz.

    Tipp

    Vor Windows 10 und Windows Server 2016 variierte die Anzahl der dem Client gewährten Gutschriften dynamisch zwischen Smb2CreditsMin und Smb2CreditsMax. Dies basiert auf einem Algorithmus, der versucht hat, die optimale Anzahl der zu gewährenden Gutschriften basierend auf der Netzwerklatenz und der Guthabennutzung zu bestimmen. In Windows 10 und Windows Server 2016 wurde der SMB-Server so geändert, dass auf Anforderung bedingungslos Guthaben bis zur konfigurierten maximalen Anzahl von Guthaben gewährt werden. Im Rahmen dieser Änderung wurde der Kreditdrosselungsmechanismus, der die Größe des Guthabenfensters jeder Verbindung reduziert, wenn der Server unter Arbeitsspeicherdruck steht, entfernt. Das Kernelereignis mit geringem Arbeitsspeicher, das eine Drosselung ausgelöst hat, wird nur signalisiert, wenn der Server so wenig Arbeitsspeicher (< wenige MB) hat, dass er nicht verwendet werden kann. Da der Server die Guthabenfenster nicht mehr verkleinert, ist die Einstellung Smb2CreditsMin nicht mehr erforderlich und wird nun ignoriert.

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

  • AdditionalCriticalWorkerThreads

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

    Der Standardwert ist 0. Dies bedeutet, dass keine weiteren kritischen Kernelworkerthreads 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.

    Tipp

    Der Wert muss möglicherweise erhöht werden, wenn die Menge der geänderten Cache-Manager-Daten (Leistungsindikator Cache\Dirty Pages) zunimmt, um einen großen Teil (über ca. 25 %) des Arbeitsspeichers zu verbrauchen, oder wenn das System viele synchrone Lese-E/A-Auslastungen vornimmt.

  • MaxThreadsPerQueue

    HKLM\System\CurrentControlSet\Services\LanmanServer\Parameters\MaxThreadsPerQueue
    

    Der Standardwert ist 20. Durch Erhöhen dieses Werts wird die Anzahl von Threads erhöht, die der Dateiserver zum Bedienen gleichzeitiger Anforderungen verwenden kann. Wenn eine große Anzahl aktiver Verbindungen gewartet werden muss und Hardwareressourcen, z. B. Speicherbandbreite, ausreichend sind, kann eine Erhöhung des Werts die Skalierbarkeit, Leistung und Antwortzeiten des Servers verbessern.

    Tipp

    Ein Hinweis darauf, dass der Wert möglicherweise erhöht werden muss, ist, wenn die SMB2-Arbeitswarteschlangen sehr groß werden (der Leistungsindikator "Serverarbeitswarteschlangen\Warteschlangenlänge\SMB2 NonBlocking *" liegt konstant über ~100).

    Hinweis

    In Windows 10, Windows Server 2016 und Windows Server 2022 ist MaxThreadsPerQueue nicht verfügbar. Die Anzahl der Threads für einen Threadpool ist "20 * die Anzahl der Prozessoren in einem NUMA-Knoten".

  • AsynchronousCredits

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

    Der Standardwert liegt bei 512. Dieser Parameter schränkt die Anzahl gleichzeitiger asynchroner SMB-Befehle ein, die für eine einzelne Verbindung zulässig sind. Einige Fälle (z. B. wenn ein Front-End-Server mit einem Back-End-IIS-Server vorhanden ist) erfordern eine große Menge an Parallelität (insbesondere für Dateiänderungsbenachrichtigungsanforderungen). Der Wert dieses Eintrags kann erhöht werden, um diese Fälle zu unterstützen.

  • RemoteFileDirtyPageThreshold

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

Der Standardwert ist 5 GB. Dieser Wert bestimmt die maximale Anzahl von geänderten Seiten im Cache (pro Datei) für einen Remoteschreibvorgang, bevor eine Inlinelöschung durchgeführt wird. Es wird nicht empfohlen, diesen Wert zu ändern, es sei denn, das System hat bei hohen Remote-Schreibvorgängen konsistente Verlangsamungen. Dieses Verlangsamungsverhalten tritt in der Regel auf, wenn der Client eine schnellere Speicher-E/A-Leistung als der Remoteserver hat. Die Einstellungsänderung wird auf den Server angewendet. Client und Server verweisen auf die Architektur des verteilten Systems, nicht auf bestimmte Betriebssysteme. Beispielsweise würde ein Windows Server, der Daten auf einen anderen Windows Server über SMB kopiert, weiterhin einen SMB-Client und einen SMB-Server umfassen. Weitere Informationen finden Sie unter Beheben von Leistungsproblemen mit dem Cache- und Arbeitsspeicher-Manager.

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 bzw. geeignet. Sie sollten die Auswirkungen der einzelnen Einstellungen vor dem Anwenden überprüfen.

Parameter Wert Standard
AdditionalCriticalWorkerThreads 64 0
MaxThreadsPerQueue 64 20

Leistungsindikatoren für SMB-Clientleistungsmonitore

Weitere Informationen zu SMB-Clientleistungsindikatoren finden Sie unter Windows Server 2012 File Server Tip: New per-share SMB client performance counters provide great insight.