共用方式為


SMB 檔案伺服器的效能微調

SMB 設定考慮

請確定根據需要設定 BIOS 和作業系統的電源管理模式,這可能包括高效能模式或修改過的 C 狀態。 設定任何伺服器消息塊 (SMB) 微調之前,請確定已安裝最新的、最具復原性和最快的記憶體和網路設備驅動器。

請勿啟用檔案伺服器和用戶端不需要的任何服務或功能。 請考慮停用不必要的服務或功能,例如:

  • 用戶端快取
  • 檔系統迷你篩選器
  • 防火牆篩選
  • IPSEC (英文)
  • NTFS 壓縮
  • NTFS 加密
  • 排定的工作
  • 搜尋服務
  • SMB 加密
  • SMB 簽署
  • 特雷多

複製檔案是在檔案伺服器上執行的一般作業。 Windows Server 有數個您可以使用命令提示字元執行的內建檔案複製公用程式。 建議針對這些作業使用 Robocopy。 Windows Server 2008 R2 引進 /mt Robocopy 的選項,在複製多個小型檔案時,使用多個線程大幅提升遠端檔傳輸的速度。 我們也建議您使用 /log 選項,將記錄重新導向至 NUL 裝置或檔案,以減少主控台輸出。 當您使用xcopy時,我們建議將/q/k選項新增至現有的參數。 先前的選項可藉由減少控制台輸出來減少 CPU 額外負荷,後者可減少網路流量。

SMB 效能調整

檔伺服器效能和可用微調取決於每個客戶端與伺服器之間交涉的 SMB 通訊協定,以及已部署的檔案伺服器功能。 目前可用的最高通訊協定版本是 Windows Server 2022、Windows Server 2016 和 Windows 10 中的 SMB 3.1.1。 您可以在用戶端和Get-SMBConnection伺服器上使用 Windows PowerShellGet-SMBSession | FL,檢查網路上正在使用哪個版本的 SMB。

SMB 3.0 通訊協定系列

SMB 3.0 是在 Windows Server 2012 中引進的,並在 Windows Server 2012 R2 (SMB 3.02) 和 Windows Server 2016 中進一步增強。 此版本引進的技術可能會大幅改善文件伺服器的效能和可用性。 如需詳細資訊,請參閱 Windows Server 2012 和 2012 R2 2012 中的 SMBSMB 3.1.1 的新功能

SMB 直接存取

SMB Direct 引進了使用 RDMA 網路介面的能力,以達到低延遲和低 CPU 使用率的高輸送量。

每當SMB偵測到支援 RDMA 的網路時,就會自動嘗試使用 RDMA 功能。 如果SMB客戶端無法使用 RDMA 路徑進行連線,則會回復為使用 TCP/IP 連線。 所有與SMB Direct相容的 RDMA 介面也必須實作 TCP/IP 堆棧,而 SMB 多重通道可辨識此情況。

任何 SMB 設定中不需要使用 SMB Direct,但對於想要較低延遲和較低 CPU 使用率的使用者,仍建議使用。

如需SMB直接存取的詳細資訊,請參閱 使用SMB直接存取改善檔伺服器的效能

SMB 多重通道

SMB 多重通道可讓檔案伺服器同時使用多個網路連線,並提供更高的輸送量。

如需SMB多重通道的詳細資訊,請參閱 部署SMB多重通道

SMB Scale-Out

SMB 規模擴展可讓 SMB 3.0 在叢集配置中於叢集的所有節點顯示共用。 此作用中/主動組態可讓您進一步調整檔伺服器叢集,而不需要具有多個磁碟區、共用和叢集資源的複雜設定。 共用頻寬上限是所有檔案伺服器叢集節點的總頻寬。 總頻寬不再受限於單一叢集節點的頻寬,而是取決於備份記憶體系統的功能。 您可以新增節點以增加總頻寬。

如需了解有關SMB向外延展的更多資訊,請參閱 Scale-Out 應用程式資料檔伺服器概述 和部落格文章 是否要向外延展,這是個問題

SMB 3.0 的性能計數器

下列 SMB 性能計數器是在 Windows Server 2012 中引進的,當您監視 SMB 2 和更新版本的資源使用量時,會將其視為計數器的基底集合。 將性能計數器記錄到本機的原始 (.blg) 性能計數器記錄檔。 使用通配符*來收集所有實例將成本降低,然後在後處理階段使用 Relog.exe擷取特定實例。

  • SMB 用戶端共用

    這些計數器會顯示用戶端使用SMB 2.0或更高版本存取之伺服器上檔案共享的相關信息。

    如果您熟悉 Windows 中的一般磁碟計數器,您可能會注意到某種相似之處。 這不是偶然的。 SMB 用戶端共用的效能計數器設計目的是精確地與磁碟計數器匹配。 如此一來,您可以輕鬆地重複使用您目前所擁有的應用程式磁碟效能微調的任何指引。 如需有關客戶端性能計數器對應的詳細資訊,請參閱 Per share 客戶端性能計數器部落格

  • SMB 伺服器共用

    這些計數器會顯示伺服器上SMB 2.0或更高版本檔案共用的相關信息。

  • SMB 伺服器會話

    這些計數器會顯示使用SMB 2.0或更高版本之SMB伺服器會話的相關信息。

    在伺服器端開啟計數器(伺服器共用或伺服器會話)可能會對高IO工作負載造成顯著的效能影響。

  • 繼續鍵篩選

    這些計數器會顯示 [Resume Key Filter] 的資訊。

  • SMB 直接連線

    這些計數器會測量連接活動的不同層面。 計算機可以有多個SMB直接連線。 SMB 直接連線計數器會將每個連線表示為一對IP位址和埠。 第一個IP位址和埠代表連線的本機端點,而第二個IP位址和埠則代表連線的遠端端端點。

  • 實體磁碟、SMB、CSV FS 性能計數器關聯性

    如需實體磁碟、SMB 和 CSV FS (文件系統) 計數器相關方式的詳細資訊,請參閱下列部落格文章: 叢集共用磁碟區性能計數器

調整SMB檔案伺服器的參數

下列 REG_DWORD 登入設定可能會影響 SMB 檔案伺服器的效能:

  • Smb2CreditsMinSmb2CreditsMax

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

    Windows Server 的預設值分別為 512 和 8192。 這些參數可讓伺服器在指定的界限內動態節流用戶端作業並行。 某些用戶端可能會透過較高的並行限制來達到更高的輸送量,例如,透過高頻寬、高延遲鏈接複製檔案。 這些預設值適用於 Windows Server,而非 Windows。

    小提示

    在 Windows 10 和 Windows Server 2016 之前,授與客戶端的點數數量會根據一個演算法在 Smb2CreditsMinSmb2CreditsMax 之間動態變化。該演算法嘗試根據網路延遲和點數使用量來確定最佳的授予點數數量。 在 Windows 10 和 Windows Server 2016 中,SMB 伺服器已變更為在收到請求後無條件地授予信貸,最多可達配置的信貸上限。 作為此項變更的一部分,記憶體壓力下伺服器的信用節流機制,這一機制會降低每個連接的信用窗口大小,已被移除。 在伺服器的記憶體極低時(< 幾MB),才會發出觸發節流的核心低記憶體事件信號,因為此時伺服器已變得毫無作用。 由於伺服器不再壓縮點數視窗, 因此不再需要Smb2CreditsMin 設定,現在會忽略。

    您可以監視 SMB 用戶端共用\信用攤位 /Sec,以查看點數是否有任何問題。

  • 額外關鍵工作線程

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

    默認值為 0,這表示不會新增任何重要的核心背景工作線程。 這個值會影響文件系統快取用於預先讀取和寫入後置要求的線程數目。 提高此值可在記憶體子系統中允許更多已排入佇列的 I/O,而且可以改善 I/O 效能,特別是在具有許多邏輯處理器和強大儲存硬體的系統上。

    備註

    此設定主要適用於 Windows 7、Windows Server 2008 R2 和舊版作系統。 在稍後的作系統中,雖然 Cache Manager 仍間接取用此值,但快取管理員不會在稍後的作系統中建立專用的背景工作線程;相反地,此值會間接影響每個類型的工作項目數目(一般背景工作角色、延遲寫入器等)快取管理員會配置以供稍後提交至核心線程集區。

    小提示

    如果快取管理員的臟數據(性能計數器 Cache\Dirty Pages)超過大約 25% 記憶體,或系統執行許多同步讀取 I/O,請考慮增加此值。

  • MaxThreadsPerNumaNode

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

    預設值為 20。 增加此值會提高檔伺服器可用來服務並行要求的線程數目。 需要服務大量的活動連線時,若效率低下的第三方濾鏡驅動程式影響輸入輸出,增加此值可能會改善效能。 最好安裝更新的第三方篩選驅動程式和列印驅動程式,以更有效率地處理IO,而不是改變此設定。

    小提示

    如果 SMB2 工作佇列的成長相對較大(性能計數器 'Server Work Queues\Queue Length\SMB2 NonBlocking *' 持續超過 ~100),這表明可能需要增加該值。

    備註

    在 SMB1 和 Windows Server 2012 和 Windows Server 2008 中, MaxThreadsPerQueue 用來控制此設定。 SMB1 已被取代且不再安裝,而且此設定本身現在已失效。

  • 異步積分

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

    預設值為 512。 此參數會限制單一連線上允許的並行異步 SMB 命令數目。 在某些情況下(例如,有具有後端 IIS 伺服器的前端伺服器)需要大量的並行存取(特別是檔案變更通知要求)。 您可以提高此條目的值以支持這些案例。 默認值為 Windows Server,而不是 Windows。

  • 遠端文件髒頁閾值

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

    預設值為 5 GB。 這個值會決定在執行內嵌排清之前,遠端寫入的快取中臟頁數上限(以每個檔案為基礎)。 除非系統在大量遠端寫入期間遇到一致的速度變慢,否則不建議變更此值。 通常這種速度變慢的情況會發生在用戶端的儲存裝置 IO 效能比遠端伺服器快的時候。 設定變更會套用至伺服器。 客戶端和伺服器是指分散式系統架構,而不是特定作系統;例如,Windows Server 透過 SMB 將資料複製到另一個 Windows Server 仍會牽涉到 SMB 用戶端和 SMB 伺服器。 如需詳細資訊,請參閱 快取和記憶體管理員效能問題的疑難排解

SMB 伺服器微調範例

在很多情況下,下列設定可以將計算機優化為檔伺服器效能。 這些設定在所有電腦上都不是最佳或適當的設定。 您應該先評估個別設定的影響,再套用這些設定。

參數 價值觀 預設
附加關鍵工作線程 64 0

SMB 用戶端性能監視器計數器

如需SMB用戶端計數器的詳細資訊,請參閱 Windows Server 2012 檔伺服器提示:新的個別共用 SMB 用戶端性能計數器可提供絕佳的見解