Лаба - Средства измерения загруженности кластеров
Описание файла
Документ из архива "Лаба - Средства измерения загруженности кластеров", который расположен в категории "". Всё это находится в предмете "параллельные системы и параллельные вычисления" из 9 семестр (1 семестр магистратуры), которые можно найти в файловом архиве НИУ «МЭИ» . Не смотря на прямую связь этого архива с НИУ «МЭИ» , его также можно найти и в других разделах. Архив можно найти в разделе "лабораторные работы", в предмете "параллельные системы и параллельные вычисления" в общих файлах.
Онлайн просмотр документа "Лаба - Средства измерения загруженности кластеров"
Текст из документа "Лаба - Средства измерения загруженности кластеров"
Параллельные системы и параллельные вычисления 25.05.2019
Лабораторная работа
по дисциплине
«Параллельные системы и параллельные вычисления»
Средства измерения загруженности компьютеров кластерных вычислительных системах
Цель работы: Изучение средств измерения параметров загруженности компьютеров вычислительной системы (ВС) с целью достижения равномерной загрузки. В процессе выполнения лабораторной работы должны быть освоены методы измерения параметров загруженности компьютеров, работающих под управлением операционной системы (ОС) Windows и ОС Linux, а также исследованы характеристики вычислительной сложности применяемых для этой цели алгоритмов.
Содержание работы:
Задача управления параллельными процессами на ВС связана с минимизацией времени выполнения параллельной программы и максимизацией эффективности используемых ресурсов. В настоящее время она не имеет точного решения, а используемые алгоритмы управления базируются на обобщении экспериментальных данных, эвристиках, привлечении методов искусственного интеллекта[1,2] и др.
При этом центральной проблемой является умение достаточно точно измерять и прогнозировать параметры, по которым можно эффективно контролировать загрузку кластера.
Поэтому чрезвычайно важной задачей является выбор небольшого количества параметров, которые легко измеряются и поведение которых несложно прогнозировать. Перечислим основные параметры, по которым можно достаточно объективно судить о загруженности компьютера:
-
количество процессов,
-
объем свободной памяти,
-
интенсивность обменов между дисковой и оперативной памятью,
-
интенсивность обмена данными с другими компьютерами.
Второй и третий параметры взаимосвязаны, по ним можно судить (особенно по третьему параметру) о непроизводительном времени, которое процессор компьютера тратит на обмен между оперативной и дисковой памятью (среднее обращение к дисковой памяти в современных компьютерах при страничном обмене равно 1.5 мс – среднему времени полуоборота дискового носителя).
Интенсивность обмена между компьютерами позволяет судить о загруженности каналов сетевого обмена ВС и косвенно показывают насколько часто взаимодействуют процессы, размещённые на различных компьютерах.
Параметр – количество процессов на компьютере полезен, когда решается вопрос о простаивающих компьютерах ВС и возможности перемещения части процессов. Хотя он менее информативен с позиций регулирования загрузки по сравнению с другими перечисленными параметрами.
В ОС Windows, Linux и др. есть специальные программные средства для измерения указанных параметров.
Для получения текущей загруженности компьютера, работающего под управлением ОС Windows, разработан набор библиотек с системными функциями, позволяющими разными способами измерять необходимые параметры. Нет единого способа, который бы работал на всех Win32-платформах. Поэтому приходится комбинировать несколько методов в одной программе, чтобы она работала на всех версиях Windows. К этим методам относятся следующие:
-
библиотека Process Status Helper (PSAPI);
-
ToolHelp32 API;
-
недокументированная функция ZwQuerySystemInformation;
-
счетчики производительности;
-
интерфейсы Windows Management Instrumentation;
Использование библиотеки Process Status Helper
Библиотека Process Status Helper, известная также под названием PSAPI, предоставляет набор функций, позволяющих получить информацию о процессах и драйверах устройств. Библиотека поставляется в составе Windows 2000/XP и доступна в качестве устанавливаемой компоненты для Windows NT 4.0. Для перечисления процессов библиотека предоставляет функцию EnumProcesses, которая возвращает массив идентификаторов запущенных процессов. Поскольку идентификаторы процессов не предоставляют никакой информации о параметрах загруженности компьютера, то необходимо проделать дополнительную работу. Для каждого процесса необходимо сначала получить его описатель (handle) c помощью функции OpenProcess и затем использовать функции, которые возвращают дополнительную информацию о процессах.
Использование ToolHelp32 API
Корпорация Microsoft добавила набор функций под названием ToolHelp API в Windows 3.1, позволяющих сторонним разработчикам получить доступ к системной информации, которая ранее была доступна только программистам Microsoft. При создании Windows 95 эти функции были добавлены в новую систему под названием ToolHelp32 API. В ранних версия ОС интерфейс для доступа к данным производительности был крайне запутанным и неудобным (начиная с Windows NT 4.0, Microsoft предоставляет библиотеку Performance Data Helper, значительно облегчающую получение данных производительности).
Используя ToolHelp32 API, сначала создается моментальный снимок (snapshot) списка процессов с помощью функции CreateToolhelp32Snapshot, а затем осуществляется проход по списку с помощью функций Process32First и Process32Next. Структура PROCESSENTRY32, заполняемая этими функциями, содержит всю информацию о текущем состоянии системы.
Использование функции ZwQuerySystemInformation
Несмотря на наличие документированного способа получения списка процессов в Windows NT/2000/XP с помощью данных производительности, в Windows Task Manager никогда не использовался этот интерфейс. Вместо этого применяется недокументированная функция ZwQuerySystemInformation, экспортируемая из соответствующей системной .DLL, которая позволяет получить доступ к системной информации.
Использование Windows Management Instrumentation
Windows Management Instrumentation (WMI) является реализацией Mircrosoft для так называемой технологии Web-Based Enterprise Management (WBEM). WBEM определяет унифицированную архитектуру, которая позволяет получать данные от различных источников, построенных с помощью различных технологий и платформ, и единообразно представлять эти данные. WBEM основана на схеме общей информационной модели (Common Information Model, CIM), которая является индустриальным стандартом, управляемым Distributed Management Task Force (DMTF). WMI поставляется в составе Windows 2000, но также может быть установлен на Windows 95/98/Me и Windows NT 4.0.
Использование счетчиков производительности
Операционная система Windows NT с начала её создания содержала интерфейс для получения разнообразной информации о системе в виде счетчиков производительности. Этот интерфейс является далеко не простым. Для получения той или иной информации нужно прочитать из ключа реестра HKEY_PERFORMANCE_DATA значение со специально сформированным именем. В результате возвращается набор глубоко вложенных структур, многие из которых переменного размера[3].
С появлением в Windows NT 4.0 библиотеки Performance Data Helper (PDH), предоставляется более удобный интерфейс для измеренияданных о производительности. Эта библиотека, однако, не входила в комплект поставки Windows NT 4.0, она распространялась в составе Microsoft Platform SDK. В Windows 2000 PDH.DLL присутствует по умолчанию.
Система измерения производительности в Windows NT осуществляется через понятие объекта, для которого осуществляется подсчет производительности. Примерами объектов являются процессор, жесткий диск и др. Каждый объект может иметь один или более экземпляров, и для каждого объекта существует свой набор счетчиков производительности. Задача состоит в получении значения счетчика.
Основная сложность в использовании счётчиков производительности состоит в том, что названия объектов и счетчиков производительности являются локализуемыми. Это значит, что, например, на русской версии Windows NT/2000/XP необходимо использовать “Процесс” и “Идентификатор процесса” вместо “Process” и “ID Process”. Для получения локализованных имен объектов и формирования полного пути к интересующему нас счетчику производительности необходимо писать вспомогательную функцию, которая бы осуществляла обратное преобразование.
“Счётчики производительности” (perfomance counters) – это расширяемый механизм сбора различной информации, заложенный в операционные системы линейки Windows NT, начиная с версии 3.1. Большая часть счётчиков доступна пользователю через оснастку (snap-in) Performance.
Это мощный и гибкий механизм. Но, он неочевиден, громоздок и неудобен. Однако есть несколько ситуаций, когда использование счётчиков производительности может быть необходимо, когда:
-
нужно следить за каким-то параметром системы, недоступным через другие интерфейсы (например, количество страниц передаваемых из ОП на жёсткий диск в секунду - свопинг).
-
необходимо написать какую-то сложную систему и предоставить администратору возможность использовать стандартные механизмы для доступа к информации о состоянии этой системы.
Таблица, в которой отражена применимость различных методов:
Windows 9x/Me | Windows NT 4.0 | Windows 2000/XP | |
Способ 1 | Нет | Да* | Да |
Способ 2 | Да | Нет | Да |
Способ 3 | Нет | Да | Да |
Способ 4 | Нет | Да* | Да |
Способ 5 | Да* | Да* | Да |
* - Требует установки дополнительных компонент
Табл. 1. Применимость различных методов
Ядро ОС Linux, которое управляет ресурсами компьютера, предоставляет пользователям набор команд, при помощи которых можно получить информацию о загруженности компьютера. Поэтому программа для сбора информации о загруженности компьютера может быть написана не только на любом языке программирования, имеющем компилятор для ОС Linux, но и напрямую на скриптовом языке Shell OC Linux.
Например, команда ps выводит информацию о запущенных процессах. Вывод оформлен в виде таблицы. В первой строке содержатся заголовки колонок таблицы, в последующих строках выводятся сведения о каждом процессе. В следующем примере приведен пример вызова программы и выводимая информация:
% ps u
USER PID %CPU %MEM SZ RSS TTY STAT STIME TIME COMMAND
komolkin 16302 0.0 1.0 256 628 pts/4 A 23:59:47 0:00 -tcsh
komolkin 14796 0.0 0.0 168 268 pts/4 A 00:00:16 0:00 ps u
Названия и значение колонок, выводимых при выполнении команды :
-
PID идентификатор процесса;
-
USER регистрационное имя пользователя-владельца процесса;
-
UID реальный идентификатор пользователя;
-
SIZE полный объем памяти, занимаемой процессом;
-
RES RSS размер резидентной части процесса;
-
STAT состояние процесса;
-
LIB объем библиотечных подпрограмм;
-
%CPU текущее значение загрузки процессора;
-
%MEM часть оперативной памяти, занятая резидентной частью процесса;
-
TIME процессорное время, затраченное на выполнение процесса;
-
COMMAND команда запуска процесса;
-
PPID идентификатор родительского процесса;
-
TSIZE объем машинного кода программы;
-
DSIZE объем данных (области данных и стека) программы;
-
SWAP объем части процесса, выгруженной в область свопинга.
Программа на языке ОС Shell для получения параметра - Загрузка процессора, может быть составлена следующим образом:
#!/bin/sh
set `iostat -c 2 -t proc |tail +4`
us="$3"
ni="$4"
if [ "x$ni" = "x0100" ]; then
ni=0
fi
echo $us
echo $ni
echo 0
echo User processes
Интенсивность замещения страниц можно получить при помощи следующей программы:
#!/bin/sh
set `vmstat -p proc -w 5 -c 2|tail +4`
echo $8
echo $9