Оценка производительности вычислительных систем

Производительность, один из главных показателей эффективности вычислительной системы (ВС), определяет ее вычислительную мощность через количество той или иной вычислительной “работы”, выполняемой системой в единицу времени, или в течение некоторого временного интервала. В зависимости от целей применения ВС, под вычислительной работой могут понимать различные действия, например, выполнение машинной команды, обработка пикселей или полигонов пикселей в графических системах, запросы к базам данных, время выполнения прикладной программы. К настоящему времени были сформулированы десятки различных определений производительности ВС, различающиеся в зависимости от взглядов авторов на вычислительный процесс [1,2,3,23]. Так, в [4], в зависимости от уровня описания системы рассматривают “техническую, комплексную и системную” производительности. Что касается мер производительности, то в настоящее время в литературе рассматриваются и исследуются десятки различных характеристик производительности выполнения прикладных программ [1,2,4,11,23], например, средние значения времен выполнения отдельных операций, или времени отклика на те или иные внешние запросы, характеристики работы кэш-памяти (hit/miss), и т.д. Существенно, что термины, в которых выражаются оценки производительности (Performance Evaluation), зависят от модели ВС на соответствующем уровне описания системы.

Одной из наиболее сложных и далеких от исчерпывающего решения проблем, возникающих при оценке производительности ВС, является задача прогнозирования времени выполнения программы в некоторой программно-аппаратной среде [2,6,7,8,17,62,64]. Это время может рассматриваться либо как некоторая длительность между двумя событиями, связанными с выполнением программы, либо как некоторая относительная величина, характеризующая изменение (замедление или ускорение) времени выполнения программы относительно некоторого эталона. Время достижения системой некоторого результата (обработки запроса, завершения программы) можно рассматривать как функцию тех или иных характеристик производительности. С этой точки зрения, указанные выше характеристики (часто называемые

индексами производительности” [1,2]) представляют собой неявные меры производительности, поскольку, хотя и известно, что время выполнения некоторой задачи в проектируемой системе связано с этими величинами некоторой монотонной зависимостью, определить точный вид этой зависимости, как правило, не представляется возможным.

Для прикладных ВС, в которых ресурсы расходуются, в основном, на вычисления, время выполнения программы рассматривается как статическая оценка, тогда как для управляющих ВС интерес представляет предсказание времен выполнения случайно поступающих запросов (“задач”) от управляемых объектов, и их использование как динамических характеристик для организации оперативного управления. Однако на определенных этапах разработки ВС, ввиду зависимости поведения программ от большого числа неконтролируемых факторов, время выполнения программ разумно рассматривать как случайные величины. В последовательных системах эта случайность может быть обусловлена зависимостью от входных данных (“data dependency”) при использовании конвейера [3], кэш-промахами (cache miss ratio), зависимостью ветвлений от исходных данных. В системах с одновременным выполнением нескольких процессов и совместным использованием тех или иных ресурсов (параллельные системы, распределенные системы), конфликты взаимодействующих процессов при запросах ресурсов также могут служить дополнительными источниками случайности времени выполнения задач. Поэтому, для предсказания производительности ВС на различных стадиях проектирования, требуются вероятностные модели, связывающие интересующие разработчика меры производительности с измеряемыми характеристиками структуры и функционирования проектируемой системы.

Помимо потребности в прогнозировании производительности при проектировании новых ВС (например, специализированных систем обработки сигналов (DSP)), необходимость решения задачи предсказания производительности возникает, например, при изменении (“масштабировании”) параметров основных компонентов системы (объема и времени доступа к памяти, быстродействия процессоров)[28], или переносе программного обеспечения на машины с другой архитектурой [81].

Важно отметить, что существующие системы имитационного моделирования ВС зачастую дают результаты, которые бывает трудно использовать для анализа тех или иных “узких мест” производительности вычислительных систем. Для больших параллельных и распределенных систем со значительным числом возможных путей выполнения программ, это связано с трудностью проведения и интерпретации результатов многофакторных эксперементов [2, 9]. Поэтому желательно иметь в качестве одного из инструментов проектирования вероятностные аналитические модели производительности, которые бы позволяли разработчику исследовать влияние тех или иных факторов на производительность, без привлечения значительных технических ресурсов. Как показывает анализ литературы, разработка и исследование аналитических вероятностных моделей производительности представляет собой самостоятельное научное направление современной теории вычислительных систем.

Если программы работают чисто последовательно, то проблемы оценки производительности имеют, в основном, вычислительный аспект, а именно, насколько точно аппарат современной теории вероятностей и математической статистики позволяет предсказывать времена выполнения конкретных программ по результатам тех или иных измерений на их трассах [10]. Для оценки производительности программ с параллельными и/или распределенными вычислениями может потребоваться также семантический анализ описания проектируемой системы [8,10,12]. Это связано как с недетерминизмом поведения параллельных/распределенных ВС [7,11], так и с широким использованием в автоматизированном проектировании ВС формальных спецификаций их временного поведения, привязанных к той или иной семантической модели ВС [12,14, 15, 116]. Необходимо быть уверенными, что модель, используемая для вычисления времени выполнения, отвечает условиям временной корректности, например, условиям вида “действие Y следует завершить до начала выполнения действия Z“, или условиям для различных “скрытых” действий [14,15,157], явно не представленных в исходных спецификациях. Это означает, что при моделировании производительности ВС необходим учет способов описания требований к временной корректности работы проектируемой системы ((например, обеспечения требуемой упорядоченности выполнения всех действий)), свойств используемого языка спецификации (например, стохастические сети Петри SPN, стохастическая алгебра процессов (Stochastic Process Algebra-SPA)) [13, 14,15]. Для снижения затрат проектирования желательно, чтобы модели предсказания производительности были совместимы с моделями, используемыми в современных системах автоматизированного проектирования, в частности, позволяли использовать в качестве исходной информации ту же спецификацию проектируемой ВС, что и при функциональной и временной верификации и моделировании на данном этапе проектирования. Заметим, что рассматриваемый в книге круг задач отличается от традиционных задач оценки производительности систем массового обслуживания (включая компьютерные и коммуникационные сети, моделируемые как системы массового обслуживания (СМО)), поскольку нас интересуют не характеристики производительности в терминах теории очередей (распределения длин очередей, задержки пакетов [88]), a время выполнения приложений в конкретных вычислительных средах, хотя при этом могут использоваться те или иные модели СМО (глава 4).

Методы оценки производительности можно условно разделить на измерительные, основанные преимущественно на непосредственных результатах измерения поведения ВС, и аналитические, вычисляющие характеристики производительности в рамках тех или иных математических моделей поведения ВС, и использующих непосредственные измерения как параметры. Измерительные модели могут базироваться либо на детерминированном представлении поведения ВС, либо на стохастическом. В первом случае они представляют время выполнения программ в терминах некоторых измеренных индексов производительности (числа циклов, затрачиваемых на выполнение операции [2,3], значений времени выполнения тех или иных “базовых операций” (включая конструкций языков высокого уровня [16])). Статистические вычислительные модели используют либо регрессию времени выполнения конкретной программы на времена выполнения некоторых эталонных задач [17], либо статистическую идентификацию параметров некоторых простых

линейных математических моделей [18]. Одним из существенных аспектов использования измерительных моделей является обоснованный выбор множества эталонных задач, который, однако, в данной книге подробно не рассматривается. Некоторые вопросы выбора эталонов рассмотрены в [19, 20].

Аналитические методы базируются на математических моделях, описывающих теоретически-обоснованные отношения между требуемыми показателями производительности, выраженных в терминах соответствующей концептуальной модели производительности (например, интенсивностей переходов в различных Марковских моделях, или распределения времен выполнения отдельных подзадач/операций, или характеристик взаимодействий выделенных компонентов системы в графовых моделях). В настоящее время оба подхода (измерительные и аналитические) модели сосуществуют друг с другом, имея свои области применимости. При этом оба класса моделей применяются для моделирования производительности как детерминированного, так и случайного поведения систем.

Категории: 

Метки: