Одним из главных недостатков архитектуры 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_SYSTEMCurrentControlSetControlSession ManagerQuota System).
Для управление дисковыми ресурсами используется ключ EnableFairShare в ветке HKLM_SYSTEMCurrentControlSetServicesTSFairShareDisk (1 – включить, 0 – отключить).
Данная автоматическая модель распределения ресурсов будет хорошо работать в случае, когда 100% пользователей запускают одинаковые приложения и работают по типовым схемам. Трудности могут начаться, когда необходимо создать приоритет одних приложений над другими. В этой ситуации может пригодиться функция Windows System Resource Manager (WSRM), впервые появившаяся еще в Windows Server 2003. С помощью WSRM можно гранулировано определить лимиты потребления ресурсов для определенного пользователя, приложения, сессии или целого пула приложений IIS. Однако следует понимать, что WSRM является реактивным инструментом, т.е. функция начинает работать после превышения значения контролируемого параметра.
Интересен также тот факт, что в Server 2012 RC функция WSRM отмечена как устаревшая и в последующих версиях серверных ОС Windows она поддерживаться не будет, и рекомендуется от нее отказываться. Что придет ей на замену – тоже пока не понятно.