Поділ ресурсів в Windows Server 2012 Remote Desktop Services

Одним з головних недоліків архітектури Remote Desktop Services / Terminal Services (RDS) - потенційна можливість негативного впливу сесії одного користувача, який захопив велику кількість обчислювальних ресурсів, на сесії інших користувачів. В якості першого кроку боротьби з подібною проблемою в Windows Server 2008 R2 з'явилася функція під назвою Dynamic Fair Share Scheduling (DFSS), що дозволяє балансувати і розподіляти ресурси CPU між користувачами. Ця проактивний функція за замовчуванням активна і процесорна потужність динамічно розподіляється в залежності від того, скільки сесії користувачів обслуговується в поточний момент і скільки ресурсів CPU доступно. У Windows Server 2012 можливості розподілу ресурсів істотно розширені і додана можливість управління ресурсами мережі і дискової підсистеми.

У службі RDS Windows Server 2012 RC існують такі можливості спільного використання ресурсів:

  • Network Fair Share. Динамічний розподіл смуги пропускання мережевого каналу між сесіями в залежності від кількості активних сесій.
  • Disk Fair Share. Запобігання надмірного використання дисків одним користувачем, рівномірний розподіл дискових операцій I / O між сесіями.
  • CPU Fair Share. Динамічний розподіл процесорного часу між сесіями в залежності від кількості активних сесій і загального рівня завантаження (нагадаю, що функція з'явилася ще в Windows Server 2008 R2).

У Windows Server 2012 (на даний момент RC), наскільки я зрозумів, управління розподілом ресурсів на сервері RDS зведено до мінімуму: цю функцію можна тільки включити або відключити, все інше система налаштує сама. Якщо ви використовуєте Citrix XenApp, вбудовану функцію розподілу ресурсів Windows можна відключити і покластися цілком на можливості XA.

Дозволити або не дозволити розподілу ресурсів можна за допомогою реєстру або групової політики, однак на момент виходу Windows Server 2012 RC, в групових політиках мені вдалося знайти тільки пункт, що стосується управління CPU - Turn off Fair Share CPU Scheduling (Ймовірно, в остаточному релізі з'являться і інші параметри).

Цей же самий параметр знаходиться в значенні параметра EnableCpuQuota (HKLM_SYSTEM \ CurrentControlSet \ Control \ Session Manager \ Quota System).

Для управління дисковими ресурсами використовується ключ EnableFairShare в гілці HKLM_SYSTEM \ CurrentControlSet \ Services \ TSFairShare \ Disk (1 - включити, 0 - відключити).

Дана автоматична модель розподілу ресурсів буде добре працювати в разі, коли 100% користувачів запускають однакові додатки і працюють за типовими схемами. Труднощі можуть початися, коли необхідно створити пріоритет одних додатків над іншими. У цій ситуації може стати в нагоді функція Windows System Resource Manager (WSRM), що вперше з'явилася ще в Windows Server 2003. За допомогою WSRM можна гранульований визначити ліміти споживання ресурсів для певного користувача, додатки, сесії або цілого пулу додатків IIS. Однак слід розуміти, що WSRM є реактивним інструментом, тобто функція починає працювати після перевищення значення контрольованого параметра.

Цікавий також той факт, що в Server 2012 RC функція WSRM відзначена як застаріла і в наступних версіях серверних ОС Windows вона підтримуватися не буде, і рекомендується від неї відмовлятися. Що прийде їй на заміну - теж поки не зрозуміло.