Windows Server 遠程桌面服務 (RDS) 中的資源公平共享

Jacki

託管多個用戶的終端服務器的一個常見問題是單個用戶可以啟動資源密集型進程,這會對其他用戶會話的性能產生負面影響。例如,如果一個用戶啟動了一個佔用主機CPU 90%以上的進程,其他用戶將無法正常工作。

為了防止這種情況,具有遠程桌面服務 (RDSH) 角色的 Windows Server 以及 Windows 10/11 Enterprise 多會話支持動態公平份額調度 (DFSS)特徵。 DFSS 在用戶會話之間公平地動態分配可用的服務器計算資源,確保任何單個會話都無法獨占 CPU、磁盤或網絡資源,從而為所有用戶保持平衡的性能。 DFSS 可以管理以下主機計算資源的使用:

  • CPU 公平份額– 用於在會話之間動態分配可用的 CPU 時間(同時考慮活動會話的數量和每個會話的 CPU 時間使用情況)。這可以防止單個用戶通過運行繁重的進程來獨占 RDS 主機上的 CPU。
  • 磁盤公平份額– 它允許在用戶之間分配 I/O 操作的可用存儲帶寬。
  • 網絡公平份額– 允許使用循環機制在會話之間分配可用網絡接口帶寬。

DFFS 不控制 RAM 的分配,也不用於在用戶會話之間分配內存。

DFSS 首次在 Windows Server 2008 R2 中引入,當時它最初僅可用於調度 CPU 資源。從 Windows Server 2012 開始,公平共享調度已擴展到 CPU 之外,包括動態網絡吞吐量和磁盤 I/O 平衡

安裝遠程桌面會話主機 (RDSH) 角色後,Windows Server 2016 及更高版本上會啟用公平共享功能。默認情況下應用遠程桌面服務中的公平負載平衡僅CPU資源。 CPU 公平共享功能在用戶會話之間動態均勻地分配可用的 CPU 時間。如果用戶消耗太多 CPU 週期,DFSS 會自動減少分配給該用戶的 CPU 資源,從而為其他用戶釋放處理能力。

運行 PowerShell 命令檢查 DFSS 是否已啟用:

(gwmi win32_terminalservicesetting -N "rootcimv2terminalservices").enabledfss

1– 啟用 DFSS

0– 禁用

一個單獨的組策略選項稱為關閉公平共享 CPU 調度可用於啟用或禁用 RDS 主機上 CPU 資源的公平分配(計算機配置 -> 管理模板 -> Windows 組件 -> 遠程桌面服務 -> 遠程桌面會話主機 -> 連接)

默認情況下,Windows Server RDS 和 Windows Enterprise 多會話版本啟用了 CPU 公平共享,而動態磁盤公平共享和動態網絡公平共享處於禁用狀態,除非由管理員手動啟用。檢查的值啟用CPU配額註冊表參數來確認:

有關的:在 RDS Windows Server 上啟用單點登錄 (SSO) 身份驗證

Get-Itemproperty -Path "HKLM:SYSTEMCurrentControlSetControlSession ManagerQuota System" -name EnableCpuQuota

還有啟用公平共享參數值為0(禁用)磁盤和網絡(它們沒有單獨的 GPO 參數):

Get-ItemProperty -Path "HKLM:SYSTEMCurrentControlSetServicesTSFairShareDisk" -name EnableFairShare
Get-ItemProperty -Path "HKLM:SYSTEMCurrentControlSetServicesTSFairShareNetFS" -name EnableFairShare

獲取所有三個選項的值:

Get-WmiObject -Class win32_terminalservicesetting -Namespace rootcimv2terminalservices | FL EnableDFSS,EnableDiskFSS,EnableNetworkFSS

您只能通過註冊表更改網絡和磁盤的 Fairy 共享的值“啟用公平共享”您只能通過註冊表將“EnableFairShare”鍵的值更改為 1 來啟用網絡和磁盤的 Fairy 共享。

或者使用以下 PowerShell 命令:

使能夠公平共享CPU調度:

$temp = (gwmi win32_terminalservicesetting -N "rootcimv2terminalservices")
$temp.enableDFSS = 1
$temp.put()

使能夠動態磁盤公平份額:

$temp = (gwmi win32_terminalservicesetting -N "rootcimv2terminalservices")
$temp.enableDiskFSS = 1
$temp.put()

使能夠網絡公平份額:

$temp = (gwmi win32_terminalservicesetting -N "rootcimv2terminalservices")
$temp.enableNetworkFSS = 1
$temp.put()

因此,要禁用每個 DFSS 功能,請將其值更改為0

在某些情況下,如果動態公平共享調度顯著影響 RDS 主機上的用戶應用程序的性能,建議禁用它。雖然 DFSS 有助於確保 CPU、磁盤和網絡帶寬等資源在用戶之間公平分配,但某些工作負載可能會受到限制,從而導致應用程序性能下降。