Windows Server リモート デスクトップ サービス (RDS) でのリソースの公平な共有
<本文>
複数のユーザーをホストするターミナル サーバーによくある問題は、1 人のユーザーがリソースを大量に消費するプロセスを開始する可能性があり、これが他のユーザーのセッションのパフォーマンスに悪影響を与えることです。たとえば、あるユーザーがホストの CPU の 90% 以上を使用するプロセスを開始すると、他のユーザーは正常に作業できなくなります。
このような状況を防ぐために、リモート デスクトップ サービス (RDSH) の役割を持つ Windows Server および Windows 10/11 Enterprise マルチセッションは、Dynamic Fair Share Scheduling (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 "root\cimv2\terminalservices").enabledfss

1 – DFSS が有効です
0 – 無効
フェア シェア CPU スケジュールをオフにする という別のグループ ポリシー オプションを使用して、RDS ホスト上の CPU リソースの公平な割り当てを有効または無効にすることができます (コンピューターの構成-> 管理用テンプレート-> Windows コンポーネント-> リモート デスクトップ サービス-> リモート デスクトップ セッション ホスト-> 接続) 
デフォルトでは、Windows Server RDS および Windows Enterprise マルチセッション バージョンでは CPU フェア シェアが有効になっていますが、ダイナミック ディスク フェア シェアとダイナミック ネットワーク フェア シェアは、管理者が手動で有効にしない限り無効になっています。 EnableCpuQuota レジストリ パラメータの値をチェックして確認します。
Get-Itemproperty-Path "HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Quota System\"-name EnableCpuQuota

また、ディスクとネットワークの EnableFairShare パラメータ値は 0 (無効) です (これらには個別の GPO パラメータはありません)。
` Get-ItemProperty-Path “HKLM:\SYSTEM\CurrentControlSet\Services\TSFairShare\Disk"-name EnableFairShare
Get-ItemProperty-Path “HKLM:\SYSTEM\CurrentControlSet\Services\TSFairShare\NetFS"-name EnableFairShare `

3 つのオプションすべての値を取得します。
Get-WmiObject-Class win32\_terminalservicesetting-Namespace root\cimv2\terminalservices | FL EnableDFSS、EnableDiskFSS、EnableNetworkFSS

レジストリを介してネットワークとディスクのフェアリー共有を有効にするには、「EnableFairShare」キーの値を に変更する必要があります。レジストリを介してネットワークとディスクのフェアリー共有を有効にするには、「EnableFairShare」キーの値を 1 に変更する必要があります。
または、次の PowerShell コマンドを使用します。
フェアシェア CPU スケジューリングを有効にする:
` $temp=(gwmi win32_terminalservicesetting-N “root\cimv2\terminalservices”)
$temp.enableDFSS=1
$temp.put() `
ダイナミック ディスク フェア シェアを有効にする:
` $temp=(gwmi win32_terminalservicesetting-N “root\cimv2\terminalservices”)
$temp.enableDiskFSS=1
$temp.put() `
ネットワーク フェア シェアを有効にする:
` $temp=(gwmi win32_terminalservicesetting-N “root\cimv2\terminalservices”)
$temp.enableNetworkFSS=1
$temp.put() `
したがって、各 DFSS 機能を無効にするには、その値を 0 に変更します。
特定の状況において、RDS ホスト上のユーザー アプリのパフォーマンスに重大な影響を与える場合は、ダイナミック フェア シェア スケジューリングを無効にすることをお勧めします。 DFSS は、CPU、ディスク、ネットワーク帯域幅などのリソースをユーザー間で公平に配分するのに役立ちますが、一部のワークロードではスロットリングが発生し、アプリのパフォーマンスの低下につながる可能性があります。
*️⃣ 出典リンク:
Windows 10/11 Enterprise マルチセッション、リモート デスクトップ セッション ホスト (RDSH) の役割がインストールされている、