Contents

Windows Server リモート デスクトップ サービス (RDS) でのリソースの公平な共有

Contents

<本文>/images/cpu-fair-sharing-on-windows-server-rds.png

複数のユーザーをホストするターミナル サーバーによくある問題は、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 バランシングが含まれるようになりました。

/images/cpu-fair-sharing-on-windows-server-rds.png

フェア シェア機能は、リモート デスクトップ セッション ホスト (RDSH) の役割がインストールされている場合、Windows Server 2016 以降のバージョンで有効になります。リモート デスクトップ サービスの公平な負荷分散は、デフォルトでは CPU リソースにのみ適用されます。 CPU フェアシェア機能は、利用可能な CPU 時間をユーザー セッション間で均等に動的に分配します。ユーザーが消費する CPU サイクルが多すぎる場合、DFSS はそのユーザーに割り当てられている CPU リソースを自動的に減らし、他のユーザーの処理能力を解放します。

PowerShell コマンドを実行して、DFSS が有効になっているかどうかを確認します。

(gwmi win32\_terminalservicesetting-N "root\cimv2\terminalservices").enabledfss

/images/check-the-status-of-dynamic-fair-share-scheduling.png

1 – DFSS が有効です

0 – 無効

フェア シェア CPU スケジュールをオフにする という別のグループ ポリシー オプションを使用して、RDS ホスト上の CPU リソースの公平な割り当てを有効または無効にすることができます (コンピューターの構成-> 管理用テンプレート-> Windows コンポーネント-> リモート デスクトップ サービス-> リモート デスクトップ セッション ホスト-> 接続) /images/gpo-option-turn-off-fair-share-cpu-scheduling.png

デフォルトでは、Windows Server RDS および Windows Enterprise マルチセッション バージョンでは CPU フェア シェアが有効になっていますが、ダイナミック ディスク フェア シェアとダイナミック ネットワーク フェア シェアは、管理者が手動で有効にしない限り無効になっています。 EnableCpuQuota レジストリ パラメータの値をチェックして確認します。

Get-Itemproperty-Path "HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Quota System\"-name EnableCpuQuota

/images/enablecpuquota-fair-share-cpu-scheduling-is-en.png

また、ディスクとネットワークの 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 `

/images/enablefairshare-registry-option-on-windows-serve.png

3 つのオプションすべての値を取得します。

Get-WmiObject-Class win32\_terminalservicesetting-Namespace root\cimv2\terminalservices | FL EnableDFSS、EnableDiskFSS、EnableNetworkFSS

/images/check-if-fairshare-of-resources-in-rd-session-host.png

レジストリを介してネットワークとディスクのフェアリー共有を有効にするには、「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) の役割がインストールされている、