Работа с менеджером системных ресурсов Windows SRM в Windows 2008 Server

ОГЛАВЛЕНИЕ

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

Что нового в операционной системе Windows 2008 Server

Менеджер системных ресурсов Windows System Resource Manager – это не новый инструмент, который появился еще до выхода операционной системы Windows 2008 Server. В действительности он появился с выходом операционной системы Windows Server 2003. Самое большое различие между версиями этого инструмента в операционных системах Windows Server 2003 и Windows 2008 Server заключается в том, что менеджер системных ресурсов Windows System Resource Manager стал частью операционной системы Windows 2008 Server (но только для корпоративной версии или Enterprise Edition). Как вы можете знать, менеджер системных ресурсов Windows System Resource Manager не был включен в операционную систему Windows Server 2003. В рамках этой статьи я буду работать с версией, которая включена в операционную систему Windows 2008 Server.

Установка менеджера системных ресурсов Windows System Resource Manager

Хотя менеджер системных ресурсов Windows System Resource Manager включен в операционную систему Windows 2008 Server operating system, он не установлен по умолчанию (по крайней мере в бета версии, которую я использую). Процедура для установки компонентов Windows в операционной системе Windows 2008 Server совершенно отличается от способа, который использовался в операционной системе Windows Server 2003. Апплет Add/Remove Programs (добавить/удалить программы) исчез из Control Panel (панели управления). Вместо этого, вы должны добавить или удалить компоненты Windows с помощью менеджера сервера Server Manager.

Начнем процесс установки с открытия менеджера сервера Server Manager. Когда менеджер сервера откроется Server Manager, выберите контейнер менеджера сервера Server Manager на самой вершине дерева. После того, как вы это сделаете, в правом окне появится общая информация относительно способа настройки вашего сервера. Прокрутите все эту информацию до тех пор, пока не достигните раздела Features Summary, который изображен на рисунке 1.


Рисунок 1: Раздел Features Summary используется для добавления или удаления компонентов Windows

После этого вы должны нажать на ссылку Add Features (добавить элементы), которую можно увидеть на рисунке. Это приведет к запуску мастера Windows по добавления новых элементов (Add Features wizard). Начальное окно мастера содержит набор полей, которые соответствуют различным компонентам Windows. Поставьте галочку напротив поля Windows System Resource Manager. После этого появится выпадающее окно, которое сообщит вам, что вы также должны установить SQL Server 2005 Embedded Edition. Нажмите на кнопку Add Required Role Services (добавить службы необходимых ролей) для выбора необходимых компонентов и закрытия выпадающего окна, и вернитесь к окну мастера. Нажмите на кнопку Install (установить) и все необходимые службы будут установлены на сервер.


 

Использование менеджера системных ресурсов Windows System Resource Manager

После завершения процесса установки вы можете запустить менеджер системных ресурсов Windows System Resource Manager, выбрав его из меню административных инструментов (Administrative Tools). После открытия менеджера системных ресурсов Windows System Resource Manager, вы увидите окно, спрашивающее вас о том, хотите ли вы производить администрирование локальной машины (local computer) или удаленного компьютера (remote machine). В рамках этой статьи, я выбрал вариант для локального компьютера (local computer) и нажал на кнопку Connect (подключиться). Если вы получите сообщение об ошибке, то проверьте, запущены ли у вас служба менеджера системных ресурсов (Windows System Resource Manager service) и служба SQL Server 2005 Embedded Edition service. После установления соединения консоль менеджера системных ресурсов Windows System Resource Manager console должна выглядеть, как на рисунке 2.


Рисунок 2: Так должна выглядеть консоль менеджера системных ресурсов Windows System Resource Manager console после установления соединения

Создание процесса соответствия критериям (Process Matching Criteria)

Теперь, когда менеджер системных ресурсов Windows System Resource Manager установлен и запущен, давайте начнем с создания некоторого процесса соответствия критерию (process matching criteria). Создание процесса соответствия критерию (process matching criteria) позволяет вам описать приложения или процесс таким образом, что ему можно назначить ресурсы.

На первом этапе необходимо указать приложение, для которого вы хотите создать процесс соответствия критерию (process matching criteria). После этого щелкните правой кнопкой мыши на контейнере Process Matching Criteria и выберите команду New Process Matching Criteria (создать процесс) и контекстного меню. После этого Windows загрузит диалоговое окно New Process Matching Criteria.

После появления этого окна первое, о чем вас спросят – это название критерия (criterion name). Вы можете задать в этом поле любое название, которое вам нравиться, но я рекомендую использовать название, которое описывает процесс, который вы хотите определить.

Теперь вы должны указать процесс, службу или приложение, которое вы хотите определить. Для этого нажмите на кнопку Add (добавить). Появиться диалоговое окно Add Rule (добавить правило). То что вы будете делать дальше зависит от того, что именно вам нужно. Например, если вы хотите вручную определить приложение, то просто введите путь к приложению и имя файла в поле Include Files или Command Lines.

Также у вас есть возможность выбора приложения, процесса или службы, или даже пул приложений IIS application pool из списка. Если вы посмотрите на Рисунок C, то вы обратите внимание на выпадающий список со словом Application. Вы можете использовать этот выпадающий список для выбора приложения, запущенного процесса (running process), зарегистрированной службы (registered service), или пула приложений IIS application pool. После того, как вы сделаете свой выбор, нажмите на кнопку Select (выбрать) и вы увидите список параметров, из которых вы можете выбрать. Если вы выберите параметр Application (приложение), то Windows просто отобразит содержимое жесткого диска, а не список приложений. Далее вам необходимо выбрать приложение, которое вы хотите определить.


Рисунок 3: На этом рисунке я определил в качестве приложения Notepad (Блокнот)

Перед тем, как я продолжу, я хочу немного поговорить о свойствах, изображенных на рисунке C. Если вы повнимательней посмотрите на эти свойства, то вы обратите внимание, что есть небольшое пространство для более чем одного файла или командной строчки. Причина этого заключается в том, что вы описываете приложение. Иногда, для приложений необходимо несколько исполняемых файлов. При определении приложения, вы можете задать несколько файлов или даже набор приложений, процессов, служб или даже пула приложений IIS application pools.

Если вы посмотрите на нижнюю часть окна свойств, изображенного на рисунке C, то увидите, что есть поле, которое вы можете использовать для исключения файлов или командных строк. Случайно, вы можете оказаться в ситуации, в которой определяемое приложение имеет общий исполняемый код с других приложением. Если такое случилось, то вы можете установить ограничения для общего кода. Опция Exclude Files or Command Lines предоставляет вам возможность исключения компонентов из описания приложения.

Нажмите на кнопку OK и вы вернетесь в диалоговое окно New Process Matching Criteria. Как вы можете увидеть из рисунка 4, приложение, которое мы определили добавилось в список Files or Command Lines. Нажмите на кнопку OK еще раз и приложение, которое вы только что определили появится в списке в контейнере Process Matching Criteria, как показано на рисунке 5.


Рисунок 4: Приложение, которое мы определили было добавлено в список Files or Command Lines list

 


Рисунок 5: Приложение, которое мы только что определили, теперь присутствует в списке в контейнере Process Matching Criteria


 

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

Давайте теперь поговорим о том, как создать политику распределения ресурсов для центрального процессора (CPU resource allocation policy). Эта политика будет использоваться для контроля максимально допустимого процессорного времени, которое может потреблять данное приложение. Начнем этот процесс с открытия консоли менеджера системных ресурсов Windows System Resource Manager console. После открытия консоли щелкните правой кнопкой мыши на контейнере Resource Allocation Policies (политики распределения ресурсов) и выберите команду New Resource Allocation Policy (новая политика распределения ресурсов) из выпадающего контекстного меню. После этого Windows откроет новое диалоговое окно New Resource Allocation Policy, которое изображено на рисунке 1.


Рисунок 1: Это диалоговое окно используется для описания новой политики распределения ресурсов

Первое, что вы должны сделать – это ввести название для новой политики. Т.к. у вас может быть несколько политик, которые предназначены для регулирования использования процессора CPU (все для различных приложений), то неплохо было бы присвоить политике понятное и имя, которое бы отражало ее назначение. Например, вы можете присвоить политике название, которое будет связано с приложением, которое призвано регулировать эта политика. Конечно, если вы собираетесь использовать эту политику для регулирования работы нескольких приложений, то, вероятней всего, вы захотите связать название политики с тем, что она будет делать, а не с названиями приложений, для которых она будет применяться.

После того, как вы назовете свою политику, вы должны присвоить ее по крайней мере одному процессу соответствия критерию. Этот процесс компания Microsoft называет присвоением политики одному или нескольким приложений. Для этого, нажмите на кнопку Add (добавить), и вы увидите диалоговое окно, изображенное на рисунке 2.


Рисунок 2: Диалоговое окно Add or Edit Resource Allocation Properties позволяет вам выбрать приложение, для которого вы хотите использовать свою политику

Первое, что вы, вероятно, заметите – это выпадающий список Process Matching Criteria (процесс соответствия критерию). Этот список предоставляет вам возможность выбора либо пула приложений IIS application pool или одного из приложений, которое вы уже определили. В этом конкретном случае, я выбрал Notepad (блокнот), т.к. это было приложение, которое я определил в первой части этой статьи.

Сразу же под выпадающем списком Process Matching Criteria располагается поле, которое позволяет вам в процентном соотношении указать процессорное время, назначаемое выбранному приложению. Выбираемое вами значение отражает максимальную величину процессорного времени, которое может потреблять выбранное приложение. Если у вас всего одна политика, то вы можете установить для процессорного времени в любое значение от 0% до 99%. Обратите внимание на последнюю строку текста на рисунке 2. Она отражает оставшиеся проценты для CPU, оставленные на значение по умолчанию. Это значит, что если вы описали политику, согласно которой приложению будет отведено 25% из ресурсов вашего процессора, то лишь 74% общего компьютерного времени будет доступно другим политикам. В случае, если вас удивило, что это значение не 75%, то я объясню, что это из-за того, что менеджер системных ресурсов Windows System Resource Manager позволяет вам распределять лишь 99% ресурсов процессора вашего компьютера. По крайней мере 1% необходимо зарезервировать для нужд операционной системы Windows operating system. Если процессорное время было единственным ресурсом, который вы хотели распределить и включить в эту политику, то вам необходимо просто нажать на кнопку OK два раза для создания политики. Перед тем как посмотреть, как все это работает, давайте сперва посмотрим, как создать политику, которая позволит распределять ресурсы памяти. Создание политики распределения памяти (Memory Allocation Policy) Если вы посмотрите на рисунок 2, то вы заметите, что окно свойств, изображенное на рисунке содержит закладку Memory (Память). Как выглядит эта закладка вы можете увидеть на рисунке 3.


Рисунок 3: Закладка Memory (память) позволяет вам установить распределение памяти, которая будет выделена приложению

Как вы можете увидеть из рисунка, эта закладка позволяет вам указать максимальный объем памяти, выделяемой под каждый процесс. Для этого вам просто необходимо выбрать поле Use Maximum Committed Memory for Each Process, а затем указать значение в мегабайтах.

Задание ограничений на объем выделяемой памяти работает немного по-другому, чем указание максимальной загрузки процессора. Когда мы указываем максимальное использование процессора, мы устанавливаем абсолютное значение. Политика просто не позволит приложению использовать больше процессорного времени, чем было задано. Когда вы задаете максимальное значение памяти, выделяемой под процесс, вы устанавливаете не абсолютное значение. Политики не запретит потребление дополнительной памяти. Вместо этого вы должны использовать выпадающий список If Memory Is Surpassed для контроля того, что случиться в том случае, если исчерпан лимит памяти.

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

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

Последняя настройка на этой закладке позволяет вам ограничить максимальный рабочий набор для каждого процесса. Вы можете включить эту настройку, выбрав поле Use Maximum Working Set Limit for Each Process, а затем введя необходимое значение в специальное поле.

Задание приоритетов при распределении ресурсов

После того, как вы закончили создание вашей политики, нажмите на OK. Теперь вы вернетесь в диалоговое окно New Resource Allocation Policy. Как вы можете увидеть из рисунка 4 политика, которую мы создали, теперь появится в списке ресурсов.


Рисунок 4: Наша новая политика появилась в списке ресурсов

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

Брайн Позей (Brien Posey)