Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Глава 38. Оценка производительности компьютеров.doc
Скачиваний:
2
Добавлен:
01.07.2025
Размер:
145 Кб
Скачать
☆

38.2. Способы оценки пиковой производительно­сти

Исторически одной из первых оценок пиковой производительно­сти компьютера была оценка «число команд, выполняемых компьютером в единицу времени» (MIPS - Million Instructions Per Second). Для определенного класса приложе­ний такой подход является вполне приемлемым, поскольку общее представ­ление о скорости работы компьютера получить можно. Но, опять-таки, только самое общее. Производительность, выраженная в MIPS, говорит о скорости выполнения компьютером своих же команд. Но в какое число команд отобразится программа пользователя или отдельный ее опера­тор? Заранее не ясно. К тому же каждая программа обладает своей специ­фикой, число команд той или иной группы от программы к программе мо­жет меняться очень сильно. В этом контексте данная характеристика действительно дает лишь самое общее представление о производительности компьютера.

Для задач вычислительного характера, в которых важна высокая скорость выполнения операций над вещественными числами, подход к определению производительности не должен опираться на скорость выполнения машинных команд. Во многих случаях операции над вещественными числами выполняются медленнее, чем, скажем, управляющие или целочисленные операции. За время выполнения одной операции деления двух чисел в формате с плавающей точкой может выполниться десяток простых команд. Это послужило причиной введения другой оценки пиковой производительности: «число вещественных операций, выполняемых компьютером в единицу времени» (FLOPS - Floating point operations per second). Такой способ, безусловно, ближе и понятнее пользователю. Операция (а + b) в тексте программы соответствует одной операции сложения в программе. Пользователь знает вычислительную сложность своей программы, а на основе этой характеристики может получить нижнюю оценку времени ее выполнения.

Да, к сожалению, оценка будет только нижней. В этом и кроется причина недовольства и разочарований. Взяв за ориентир пиковую производительность компьютера, пользователь рассчитывает и на своей программе полу­чить столько же. Совершенно не учитывается тот факт, что пиковая производительность получается при работе компьютера в идеальных условиях. Нет конфликтов при обращении к оперативной памяти, все данные берутся из регистров, все функциональные устройства постоянно и равномерно загружены и т. п. Но в жизни так бывает редко. В каждой программе пользователя есть свои особенности, которые эти идеальные условия нарушают, обнажая «узкие» места структуры компьютера. Особенности структуры ядра, системы команд, состав функциональных исполнительных устройств, строение и объем кэш-памяти, структура подсистемы доступа в память, реализация ввода-вывода — все это, и не только это, может влиять на выполнение реальной программы. Причем заметим, перечислены только части аппаратуры, а говорить надо о программно-аппаратной среде выполнения программ в целом. Если для компьютера нет эффективных компиляторов, то пиковая производительность будет вводить в заблуж­дение еще сильнее.

Значит нужно отойти от характеристик аппаратуры и оценить эффектив­ность работы программно-аппаратной среды на фиксированном наборе за­дач. Бессмысленно для каждого компьютера показывать свой набор. Разра­ботчики без труда придумают такие программы, выполняя которые компьютер не достигает пиковой производительности. Такие примеры никого не убедят. Набор тестовых программ должен быть зафиксирован. Эти про­граммы будут играть роль эталона, по которому будут судить о возможно­стях компьютера.

Такие попытки предпринимались неоднократно. На основе различных кри­териев формировались тестовые наборы программ или фиксировались от­дельные эталонные программы (benchmark). Эталонные программы (тесты) за­пускались на различных компьютерах, замерялись те или иные параметры, на основе которых впоследствии проводилось сравнение компьютеров между собой.

Тесты SPEC

Среди известных тестов, используемых сегодня для оценки производитель­ности вычислительных систем, можно назвать тесты SPEC. Разработчиком тестов SPEC является Standard Performance Evaluation Corporation. Это некоммерческий консорциум, в который входят производители компьютеров и программного обеспечения, учебные и научные организации. Основная за­дача консорциума состоит в разработке тестов для самых разных програм­мно-аппаратных сред, моделирующих реальные рабочие нагрузки. В состав тестового набора входят тесты вычислительного характера, тесты скорости работы компьютера в качестве Web-сервера, почтового сервера, тесты графических подсистем и многие другие. В их состав включен и пакет SPEChpc, призванный отразить оценку производительности многопроцессорных компьютеров. Состав тестов часто меняется, что вызвано желанием консорциума оперативно отражать последние достижения в развитии компьютеров.

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

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

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

Хорошим вариантом для описания свойств компьютера можно было бы считать возможность выделения в таком пространстве некоторого набора характерных опорных точек. Но что считать характерной точкой и как интерполировать поведение компьютера на конкретной программе по значениям базовых параметров в выделенных характерных точках? Другой способ описания можно попытаться найти через определение функциональной зависимости свойств компьютера от параметров его программно-аппаратной среды. Однако в аналитическом виде достаточно точные оценки получить крайне сложно.

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

базовый уровень программного обеспечения: тестирование эффективности работы операционной системы, компиляторов и систем программирова­ния. Этот уровень рассматривается далеко не всегда, но нужно учесть, что все последующие действия будут "видны" через призму данного уров­ня (если компилятор плох, то хороших результатов не будет ни на одном другом уровне);

базовый уровень аппаратуры: определение скорости выполнения элемен­тарных операций, скорости обмена между различными уровнями иерар­хии памяти и объемы доступной памяти на каждом уровне (определение объемов важно для последующей интерпретации результатов);

уровень операций ввода-вывода: анализ эффективности различных режимов чтения и записи данных при работе с внешними устройствами, опреде­ление скорости выполнения основных операций с файлами и целесооб­разности выполнения асинхронных операций ввода-вывода;

уровень модельных приложений: определение характеристик компьютера при выполнении простых программ различной структуры;

уровень приложений: комплексная проверка характеристик компьютера при выполнении реальных программ.

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