Windows server ограничить ресурсы пользователя

Windows server ограничить ресурсы пользователя

Добрый день! Уважаемые читатели и гости одного из крупнейших IT блогов по системному администрированию Pyatilistnik.org. В прошлый раз мы с вами разобрали группы доступности AlwaysOn. Сегодня я хочу рассмотреть еще одну часто встречающуюся проблему в практике системного администратора, речь пойдет о балансировке и распределении системных ресурсов (CPU, Сеть, Диск) на хостах RDS фермы Windows Server 2019, но актуально будет и для более старых версий, вплоть до Windows Server 2012 R2. Мы научимся равномерно распределять нагрузку по пользовательским сессиям с помощью Dynamic Fair Share Scheduling (DFSS).

Проблема: один из пользователей потребляет 90% и более CPU

Опишу реальный случай с которым вы обязательно столкнетесь, если у вас в компании используются терминальные столы. И так есть RDS ферма построенная на базе Windows Server 2012 R2 до Windows Server 2019. На каждом из RDSH хостов могут одновременно работать свыше 30 пользователей. В среднем они суммарно не потребляют более 30% процессорных мощностей, но когда приходит период отчетности некоторые пользователи начинают нагружать сервера куда интенсивнее. Очень часто можно встретить, что пользователь работающий с Excel, 1С и похожими программами начинает потреблять 80-90% процессорных мощностей, в результате чего начинают страдать остальные пользователи этого RDSH хоста.

Ранее для решения это проблемы в Windows Server 2008 R2 был замечательный компонент диспетчер системных ресурсов (Windows System Resource Manager), но Microsoft его посчитала устаревшим и выпилила из состава компонентов, аж с Windows Server 2012 R2 и выше. Но не думайте, что доблестные разработчики не подумали чем вам восполнить этот пробел, они придумали и включили в состав Windows Server компонент «Динамическое планирование долевого распределения» или как в оригинале «Dynamic Fair Share Scheduling (DFSS)«.

Что такое Dynamic Fair Share Scheduling (DFSS)?

Так как официального метода вернуть Windows System Resource Manager не существует, а есть лишь костыльные, нам придется работать с тем, что есть. «Динамическое планирование долевого распределения» или как в оригинале «Dynamic Fair Share Scheduling (DFSS)» — это механизм автоматической балансировки и распределения сетевой нагрузки, дисковых, процессорных мощностей между всеми пользовательскими сессиями на RDSH хосте. Все эти три варианта имеют цель предотвратить чрезмерное использование ресурсов одним пользователем и предоставить всем пользователям одинаковые возможности. Однако методы FairShare не гарантируют, что ресурсы не будут исчерпаны, это все еще может иметь место. Если все пользователи используют все ресурсы ЦП, FairShare гарантирует, что все пользователи получат некоторую емкость ЦП, но все же может быть, что все процессоры загружены на 100%, а пользователи испытывают снижение производительности, это нужно учитывать.

Читайте также:  Как отключить уведомления linux

Вот так называются три компонента входящие в состав DFSS

  • CPU Fair Share — Динамически распределяет процессорное время между пользовательскими сессиями. Тут будет учитываться их количество и интенсивность использования.
  • Network Fair Share — Динамически распределяет полосу пропускания сетевого интерфейса между пользовательскими сессиями. Советую использовать совместно с Qos.
  • Disk Fair Share — данная функция защищает ваши диски от очень интенсивного использования одним пользователем, позволяет равномерно балансировать дисковые операции между всеми.

Как включить Dynamic Fair Share Scheduling (DFSS)?

Если говорить про Windows Server 2019, то динамическое планирование долевого распределения уже по умолчанию там активно, то же самое и на Windows Server 2016, а вот в Windows Server 2012 R2, ее нужно активировать. Для того чтобы у вас в системе был активен встроенный балансировщик ресурсов DFSS, у вас должна быть выключена одна политика или выставлен нужный ключ реестра.

Балансировка CPU на RDSH хосте

Для того, чтобы у вас на RDS ферме была балансировка процессорных мощностей, необходимо наличие активной политики:

Как я и писал выше функция планирования ЦП со справедливым разделением в 2019 системе включена по умолчанию, и данная политика имеет статус не задано.

Если этот параметр политики включен, то планирование ЦП со справедливым разделением отключено. Если этот параметр политики отключен или не настроен, планирование ЦП со справедливым разделением включено

Так же эта настройка имеет и аналог в виде ключа реестра, найти его можно по пути:

Если ключ EnableCpuQuota имеет значение 1, то значит планирование ЦП со справедливым разделением включено. Хочу отметить, что в Windows Server 2012 R2, хоть в системе и есть политика, но данного ключа нет, а его желательно бы создать если хотите использовать CPU Fair Share.

Как отключать CPU Fair Share

Существуют ситуации, при которых требуется выключить DFSS, приведу пример. Citrix Xenapp также имеет свои собственные политики для разделения процессорного времени между пользователями, и неудивительно, что они не могут сосуществовать с политиками Microsoft. Управление процессорами Citrix не вступит в силу, если DFSS все еще включен. На самом деле, вы получите следующую ошибку на сервере:

Для отключения CPU Fair Share в Windows Server 2019, вам нужно сначала включить политику «Отключить планирование ЦП со справедливым разделением (Turn off Fair Share CPU Scheduling)». Сделать, это можно через групповые политики или же через локальный редактор политик (gpedit.msc).

После нужно выполнить обновление групповой политики, когда первое действие выполнено вы можете изменить значение ключа EnableCpuQuota на «0». По идее все должно работать, но иногда бывают случаи, что приходилось произвести перезагрузку сервера.


Так же отключить DFSS можно и через PowerShell, для этого введите команду изменяющую значение реестра:


Пример использования CPU Fair Share

Чтобы показать работу FairShare, я использовал инструмент CPUstress, созданный Тимом Манганом. С помощью этого инструмента вы можете вызвать чрезмерное использование ресурсов процессора. В тесте будут участвовать два пользователя, Барбоскин Геннадий Викторович и Администратор.

Первый тест с включенной опцией динамического распределения процессорного время между пользовательскими сессиями. Я зашел на свою RDS ферму и запустил из под каждого пользователя CPUstress. Как видно из картинки мой процессор загружен на 100% и все его мощности делятся в равных частях между пользователями сервера.

Читайте также:  Что такое wait windows

А вот тест когда CPU Fair Share выключен, как видите тут уже идет борьба за ресурсы между пользователями, у администратора в моем примере 73%, а у barboskin.g 25%. Потом эти доли могут кардинально поменяться.


Балансировка дисковых операций на RDSH хосте

Управление балансировкой дисковых операций осуществляется через компонент Disk Fair Share. Данный компонент включается или выключается исключительно через ключ реестра EnableFairShare.

«1» означает, что компонент активен, а вот «0» отключает Disk Fair Share.


С помощью FairShare of Resources в RD Session Host Microsoft реализовала приятную функциональность. Это здорово, что Microsoft расширила функциональность с помощью Network and Disks, но лично я думаю, что большинство компаний будут чаще использовать CPU FairShare. На этом у меня все, с вами был Иван Семин, автор и создатель IT портала Pyatilistnik.org.

Терминальный сервер #1 Ограничение прав пользователей

Терминальный сервер #1 Ограничение прав пользователей

В одном из прошлых видео мы рассматривали процесс поднятия роли сервера терминалов.

В этом же уроке предлагаю более детально рассмотреть процесс ограничения прав пользователя на терминальном сервере. Да, по умолчанию он лишен административных прав и много чего не может, однако, все равно к этому вопросу нужно отнестись более внимательно, так как пользователь все же находится на самом главном устройстве в вашей компании.

Регистрируйся на следующий вебинар по системному администрированию!

Так что стоит детально проанализировать, что пользователю делать можно, а что нет.

По сути тут может быть две ситуации, когда терминальный сервер реализован в рамках доменной сети, и все пользователи хранятся на контроллере домена. И в ситуации, когда сеть одноранговая и учетками, под которыми будут подключаться пользователи к терминальному серверу, мы управляем непосредственно на терминальном сервере.

Как правило такая схема подходит для небольших компаний, у которых какая-то служба реализована на терминальном сервере, допустим 1С.

Все это я более подробно рассказывал и показывал в видео по настройке терминального сервера! Для тех, кто его не видел, я оставлю ссылку к данному видео. И если вы не понимаете, о чем речь, то для начала посмотрите его.

И так, когда мы попадаем на сервер под учеткой обычного терминального пользователя, мы не можем установить софт, однако, нам доступно довольно много различных возможностей:

— доступ к системным дискам

— можно запускать приложения, которые могут не относиться к работе пользователя

— запустить диспетчер серверов

— доступ к элементам панели управления

— доступ к диспетчеру задач

— доступ к командной строке

Давайте приступим к устранению этих недостатков.

Скажу сразу, что все что я буду показывать, это скорее базовые ограничения пользователей, которые нужно выполнить в первую очередь. Однако, на практике бывает множество различных дополнительных ограничивающих политик, так что буду очень рад, если вы в комментариях также поделитесь своим опытом из разряда, что запретили, зачем и как. Таким образом можно будет составить более развернутую картину, ну и записать вторую, а может быть и третью часть данного видео.

Читайте также:  Checking media fail при загрузке windows 10

Думаю, что нам это вполне по силам 😉 Так как тема действительно интересная и меня уже не один раз расспрашивали по поводу ограничивающих политик.

1) Доступ к жестким дискам сервера

Запретить доступ к данным системных дисков можно через групповую политику, но, если мы попытаемся её изменить через Выполнить \ gpedit.msc то мы изменим групповую политику для всех пользователей на данном сервере, так что изменения затронут как терминальных пользователей, так и административные учетные записи.

А нам нужно ограничить в правах именно учетные записи, которые не имеют административные права на сервере. Для этого запустим редактор групповой политики через консоль (Выполнить \ mmc \ Файл \ Добавить \ Редактор объектов групповой политики \ Обзор \ Пользователи \ Не администраторы \ ОК \ Готово \ ОК) При желании таким образом можно настроить политики для отдельных пользователей.

Конфигурация пользователя \ Административные шаблоны \ Компоненты Windows \ Проводник \ Запретить доступ к дискам через Мой компьютер \ Включена \ Выполнить \ cmd \ gpupdate /force

Входим на сервер под удаленным пользователем и при попытке получить доступ к диску выдается сообщение «Операция отменена из-за ограничений, действующих на этом компьютере»

Причем у вас не получится не просто получить доступ к корню диска, а к любой папке через проводник (Рабочий стол, Загрузки и т.д. Даже если на рабочем столе создать папку и зайти в неё) В общем, везде где есть путь к расположению файла.

Однако, через файловые менеджеры, например тотал коммандер получить доступ к файлам можно. Или через командную строку

Поэтому, более тонко можно настроить через редактирование NTFS прав на файлы и папки (Диск D \ ПКМ \ Свойства \ Безопасность \ Удалить Все и Пользователи \ Добавить к нужной папке пользователя в права, как правило это папка с базой данных и т.д.

Тут уже через файловый менеджер не получится открыть диск и файлы.

Если какая-то нужная папка, то можно разместить ярлык на рабочем столе, где будет фактический путь и поместить в папку для всех пользователей (C:\Users\Public\Desktop \ Разрешить отображение скрытых файлов и папок \ Копировать туда ярлык с папкой и у всех удаленных пользователей появится на рабочем столе эта папка)

Так же от сюда можно убрать различные приложения, которые могут мешать пользователю и засорять его рабочий стол.

2) Запрет запуска приложений (Административные шаблоны \ Система \ Не запускать указанные приложения Windows \ TOTALCMD.EXE)

3) Запретить элементы панели управления (Административные шаблоны \ Панель управления \ Запретить доступ к панели управления и параметрам компьютера)

4) Запретить диспетчер серверов (Административные шаблоны \ Система \ Не запускать указанные приложения Windows \ ServerManager.exe)

5) Запретить диспетчер задач (Административные шаблоны \ Система \ Варианты действий после нажатия CTRL+ALT+DEL \ Удалить диспетчер задач \ Включено)

6) Запрет командной строки (Административные шаблоны \ Система \ Запретить использование командной строки)

Удобная штука, чтобы убрать какие-то ограничения, можно не искать где вы их прописали, а перейти во все параметры, сортировка по состоянию и быстро узнать какие параметры включены.

Пишите в комментариях или мне в личку свои заметки по различным ограничениям, которые внедряете на практике. Как будет достаточно интересных дополнений, выпущу вторую часть 😉

Оцените статью