Windows server распределение ресурсов

Windows server распределение ресурсов

Всем привет сегодня хочу рассказывать, о том как установить и настроить диспетчер системных ресурсов Windows server 2008 R2. Напомню, что это компонент, который позволяет ограничить Службы удаленных рабочих столов и пулы приложений служб IIS по процессорам и оперативной памяти, так как на моей практике, были случаи, что iis выедала всю ОЗУ и виртуальная машина просто висла на прочь. Ниже мы рассмотрим как этого избежать.

И так принцип ясен, создаем лимит по ресурсам для определенной службы. Для начала нужно установить диспетчер системных ресурсов, он есть только в Windows server 2008 R2 Enterprise и Datacenter.

Устанавливаем компонент диспетчер системных ресурсов

Открываем диспетчер сервера > Компоненты > Добавить компоненты

Выбираем диспетчер системных ресурсов и жмем далее.

Вам покажут, что нужно добавить дополнительные компоненты.

начнется процесс установки диспетчера системных ресурсов

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

теперь давайте его запустим, для этого идем в пуск > Администрирование > диспетчер системных ресурсов

Вот как выглядит сама оснастка.

Создание условия соответствия процессов

Первым делом в Windows System Resource Manager делается условие, что именно за процесс или сборник процессов вы хотите ограничить. Щелкаем правым кликом по условие соответствия процессов и выбираем создать.

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

  • Зарегистрированная служба
  • Запущенный процесс
  • Приложение
  • Пул приложений IIS

Я для примера буду ограничивать приложение Google Chrome. для этого его нужно выбрать.

При желании можно добавлять много приложений.

если вы будите ограничивать IIS, то Windows System Resource Manager позволяет ограничивать даже конкретные пулы.

Далее переходим к созданию политик.

Создание политик выделения ресурсов

Для того, чтобы создать новую политику, щелкаем по корню правым кликом и выбираем Создать политику выделения ресурсов.

В мастере задаем имя политики и жмем добавить. Кстати если политик будет несколько, то их приоритет можно задавать с помощью стрелок.

У вас откроются 3 вкладки

  • Общие > даст задать условие и ограничить процессоры
  • Память > задать ограничение по памяти
  • Дополнительно

Ограничение лимита по процессорам

Я выбираю для примера IISAppPool и говорю, что он не может использовать более 95 процентов процессора. По сути вы указали максимальную величину процессорного времени, которое может потреблять выбранное приложение. При наличии всего одной политики вы можете установить для процессорного времени в любое значение от 0% до 99%.

Читайте также:  Orient bluetooth драйвер для windows

Посмотрите еще параметр Процент оставшегося времени ЦП, это сколько процессорных мощностей у вас осталось. Простой пример вы задали политикой для приложения 25% из ресурсов вашего процессора, это значит что остальным приложениям будет доступно 74 процента один процент система оставляет себе на случай того, чтобы можно было достучаться до Windows System Resource Manager.

Но тут же можно и выбрать, то что создано заранее.

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

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

Осталась вкладка дополнительно, тут можно явным образом задать какие процессоры использовать и указать правила управления, о них ниже.

Если вы нажмете кнопку перераспределить ресурсы, то сможете добавить дополнительные условия.

Не забудьте еще настроить уведомления о событиях и все ваш Windows System Resource Manager, готов к работе.

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

Ранее для решения это проблемы в 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%, а пользователи испытывают снижение производительности, это нужно учитывать.

Вот так называются три компонента входящие в состав 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 системе включена по умолчанию, и данная политика имеет статус не задано.

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

Читайте также:  Oracle java linux mint 20

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

Если ключ 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% и все его мощности делятся в равных частях между пользователями сервера.

А вот тест когда 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.

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