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

Тщательный анализ показывает, что производительность вычислительной системы зависит от множества факторов, в том числе:

1. скоростных характеристик и разрядностей системы шин компьютера;

2. скоростных характеристик и объема внешних запоминающих устройств, особенно магнитных дисков;

3. устройств, обеспечивающих обмен данными между входящими в вычислительную систему процессорами;

4. возможностей используемой операционной системы, ее «умения распорядиться» возможностями аппаратуры, а особенно того, как организована параллельная работа центральных процессоров;

5. «умения» трансляторов подготовить машинный код программы к исполнению в параллельной среде – на нескольких функциональных блоках, конвейерах, процессорах и т. д.

6. возможностей организации параллельного исполнения программы, имеющихся в используемых языках программирования.

7. мощности применяемых алгоритмических и математических методов, того, насколько удачным оказался выбранный способ распараллеливания задачи, то есть способ выделения участков, предназначенных для одновременного, параллельного исполнения на нескольких процессорах или компьютерах вычислительной системы;

8. степени соответствия имеющихся аппаратных средств и выбранного способа распараллеливания;

9. и наконец, от возможностей распараллеливания, которые заложены в «природу» решаемой задачи.

В настоящее время используется несколько способов указания мощности компьютеров:

1. Оценка с помощью тактовой частоты;

2. Оценка с помощью указания количества операций, выполняемых в единицу времени;

3. Тестирование на специально отобранных программах.

Характеристики хороших метрик:

1. Линейность – пропорциональность фактической производительности системы значению метрики.

2. Надежность – стабильность результатов.

3. Повторяемость. Метрика должна давать одинаковый результат при вычислении с одинаковыми начальными условиями.

4. Согласованность – единицы измерения и определения постоянны среди различных систем.

5. Независимость от конкретных производителей аппаратного обеспечения.

6. Легкость измерения.

###

### 13.1. Оценка производительности тактовой частотой

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

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

### 13.2. Пиковая и реальная производительности

Для многих способов оценки различают пиковую (от peak – высшая точка) и реальную производительность вычислительной системы. Пиковая производительность представляет собой полученную теоретическим путем верхнюю оценку мощности вычислительной системы, а реальная производительность определяется экспериментальным путем, во время выполнения реальных программ. Пиковую производительность рассчитывают в предположении, что при выполнении программы все устройства компьютера работают на максимальном уровне своих возможностей. К пиковой производительности можно подойти довольно близко, но достичь ее в реальных условиях невозможно. Пиковая производительность для любой вычислительной системы рассчитывается однозначно, однако она слабо связана с конкретными показателями, которые могут быть достигнуты для конкретных задач: на одних задачах это может быть 90% от пиковой, а на других – только 5 – 10%.

### 13.3. Единицы MIPS

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

В этом подходе оценка производительности вычислительных систем производится в единицах MIPS (Million Instructions Per Second – миллион машинных команд в секунду), в которых мощность компьютера равна отношению количества выполненных машинных команд (инструкций) ко времени их выполения. Отличие этого способа оценки производительности в том, что в расчетах не различают формат данных, над которыми выполняет действие центральный процессор, то есть используется реальная смесь команд программы, состоящая из действий и над целочисленными, и над вещественными данными. Очевидное удобство этого способа – в его простоте и интуитивной понятности.

Основной недостаток использования единиц MIPS – в том, что результат зависит от системы команд процессора. Поэтому сложно сравнивать производительности компьютеров с разными системами машинных команд. Кроме того, известно, что различные команды выполняются процессором за разное время, а разные программы содержат «быстрые» и «медленные» команды в различных пропорциях. Следовательно, при выполнении на одном и том же компьютере разных программ можно получить разные оценки его производительности, что также препятствует широкому использованию этого показателя.

### 13.4. Единицы Flops

Альтернативной единицей измерения производительности вычислительных систем являются флопы, или единицы Flops (от Floating point operation per second – операции с плавающей точкой в секунду).

Более часто используются кратные единицы: мегафлопы (1 Mflops = 106 Flops), гигафлопы (1 Gflops = 109 Flops), терафлопы (1 Tflops = 1012 Flops). Эта единица отличается от предыдущей двумя особенностями. Во-первых, при измерении в единицах Flops учитываются только операции над вещественными данными, а во-вторых, в оценке участвуют не машинные команды процессора, а выполненные операции над вещественными числами. Разница в том, что одна операция над вещественными числами (например, умножение или извлечение квадратного корня) может быть задана различными последовательностями машинных команд. Количество операций над вещественными числами зависит только от решаемой задачи и не зависит от реализующей вычисления машинной программы. Поэтому измерение в единицах Flops более объективно отражает производительность компьютера.

К сожалению, вне операций над вещественными данными эта система оценки производительности неприменима, так как для программ, слабо использующих или вообще не использующих вычисления с вещественными данными (например, для программ-компиляторов), показатель производительности в единицах Flops оказывается очень малым.

У этого способа, так же как и у предыдущего, имеется недостаток, проявляющийся в существенной зависимости производительности системы от выполняемой программы. Как и в предыдущем случае, это объясняется различным соотношением между «быстрыми» и «медленными» операциями, но теперь уже не в программе, а в решаемой задаче. Кроме того, для программ с короткими циклами, когда все команды цикла могут одновременно находиться в кэше, производительность машины оказывается выше, чем для программы с циклами, в которых приходится обращаться к оперативной памяти. А для программ, в которых можно организовать много параллельных ветвей, например, для программ, работающих с матрицами, производительность многопроцессорной системы окажется существенно выше, чем ее же производительность во время выполнения программы, не допускающей распараллеливания.

### 13.5. Тесты LINPACK

Из-за отмеченных недостатков единиц MIPS и Flops для сравнения производительности компьютеров было предложено использовать в качестве критерия время выполнения специально подобранной эталонной программы или же связанные с этим временем показатели. Программы, на которых осуществляется тестирование, иногда называют бенчмарками (от bench-mark – отметка уровня). К настоящему времени создано довольно много тестовых и эталонных программ. Одной из наиболее известных систем оценки является тест LINPACK, представляющий собой пакет программ на языке Фортран, предназначенных для решения систем линейных алгебраических уравнений больших размерностей (до нескольких миллионов неизвестных) с плотной матрицей методом Гаусса с выбором главного элемента. Имеется несколько разновидностей этого теста, например, LINPACK TPP (от Toward Peak Performance – направляющийся к пиковой производительности) и HPL (от High-Performance LINPACK – высокопроизводительный LINPACK).

Для проведения тестирования формируется некоторая система линейных уравнений максимально возможной для имеющегося объема размерности и измеряется время ее решения на тестируемой вычислительной системе. Количество операций с вещественной точкой K, которые должны быть выполнены для получения решения, равно K = 2n3/3 + 2n2, оно однозначно зависит от заданной размерности матрицы n, поэтому дальнейшая оценка производительности в единицах Flops не вызывает затруднений.

В настоящее время тесты LINPACK используются для определения списка TOP500 – пятисот самых мощных вычислительных систем мира. Этот список можно найти на http://www.top500.org.

### 13.6. Ливерморские циклы

В тестировании вычислительных систем по методике LINPACK происходит проверка скоростных характеристик системы только на одном (и при этом очень узком) классе задач. В реальности встречается несравненно больше разнообразных задач, в том числе и вычислительного характера. Чтобы выявить возможности компьютера по решению задач других классов, стали применять тестирование на реальных программах, которые используют различные вычислительные методы. Одна из таких систем основана на измерении производительности с помощью так называемых ливерморских циклов, представляющих собой тщательно отобранные фрагменты программ на языке Фортран, которые используются в Ливерморской национальной лаборатории (США).

По этой методике тестирование осуществляется на наборе из 24 операторов цикла, которые являются основными наиболее существенными частями программ, реализующих часто встречающиеся численные методы решения вычислительных задач гидродинамики, ядерной физики и т. д. Заметим, что в связи с использованием основных частей (ядер) программ, обсуждаемая система известна еще и как тест LFK (Livermore Fortran Kernels – ливерморские фортрановские ядра).

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

### 13.7. SPEC и другие тесты

В настоящее время при оценке производительности в основном персональных компьютеров большой популярностью пользуется целое семейство тестов, созданных некоммерческой специализированной корпорацией SPEC (от Standard Performance Evaluation Corporation – корпорация стандартов оценки производительности).

В основу этих тестов положены реально используемые программы из самых разных областей применения информационных технологий.

Исходный вариант, относящийся к 1992 г., содержал две группы тестов. Группа с названием CINT92 состоит из шести программ на языке C, которые обеспечивают решение задач по теории цепей, разработку логических вентильных схем, упаковку текстовых файлов, включают интерпретатор для языка LISP и т. д. Эта группа программ служит для оценки производительности систем с точки зрения операций над целочисленными данными. Вторая группа тестов с названием CFP92 включает 12 программ на языке С и две на Фортране. Эти программы, обеспечивающие моделирование методом Монте-Карло, составление прогноза погоды и т. д., служат для оценки производительности систем с точки зрения операций над вещественными данными.

Результатом тестирования считаются отношения времен выполнения по каждой тестовой программе на испытуемой машине к временам их выполнения на эталонной машине. В качестве эталона выбрана вычислительная система VAX 11/780, а в версии 2006 года – Sun Ultra Enterprise 2 workstation с 296-MHz процессором UltraSPARC II. Из результатов отдельных тестов формируются две интегральные оценки: SPECint, равная среднему геометрическому оценок, полученных в индивидуальных тестах по группе CINT, и SPECfp, равная среднему геометрическому оценок, полученных в индивидуальных тестах по группе CFP. Таким образом, в тестах SPEC оценки не измеряются в единицах MIPS или Flops, а являются безразмерными относительными величинами, показывающими, во сколько раз быстрее работает испытуемая машина по отношению к эталонной.

Аналогичным образом построены и более поздние варианты данных тестов и интегральных оценок SPECint95 и SPECfp95, SPECint2000 и SPECfp2000 и т. д., а также другие специализированные тесты SPEC. Можно упомянуть, например, тест SPEChpc96, обеспечивающий оценку мощности вычислительных систем, состоящих из нескольких десятков процессоров, а также тест SPEC OMPL2001, который может применяться для тестирования систем, содержащих до 512 процессоров.

Существуют также тесты SPEC для оценки серверов и сетевых приложений.

Тесты SPECrate оценивают пропускную способность сервера. Для этого на каждом процессоре сервера запускаются тесты из SPEC CPU. Полученное процессорное время преобразуется в скорость, называемую SPECrate.

SPECSFS – бенчмарк для оценки производительности файловых серверов. Измеряет производительность NFS (Network File System), используя скрипты запросов к файловому серверу. Скрипты содержат несколько различных вариантов нагрузки, полученных путем обобщения активности многих реальных систем. При измерении оценивается производительность как дискового, так и сетевого ввода\вывода. В целом тестовый набор ориентирован на измерение пропускной способности при наличии ограничений на время обработки запроса.

SPECweb99 – это тестовый набор для измерения производительности HTTP серверов. Измеряет способность сервера обрабатывать запросы GET от нескольких внешних клиентов. Метрикой в данном случае выступает число одновременно поддерживаемых соединений, которые соответствуют заданному ограничению по bit-rate.

SPECmail2001 – тестовый набор для измерения возможностей системы по обработке почтовых запросов. Измеряет пропускную способность и время отклика. Метрика: количество сообщений в минуту, которые система может обрабатывать без существенных потерь качества обслуживания.

Есть и более специализированные тесты, например, SPECjvm2008 – тестовый набор для оценки производительности клиентской платформы jvm (а точнее Java Runtime Environment, JRE). Включает компоненты реальных программ, выполняющих обработку текста/символов, вычисления, битовые операции: compiler (java), compress (LZW), crypto (AES, RSA), Derby (DB), MPEGAudio, Scimark, Serial (serializer), Startup (jvm), Sunflow (graphics), XML. Измеряет производительность аппаратной и программной части: эффективность JIT-компилятора, производительность процессора при работе с целыми и дробными числами, производительность кэша и памяти.

Корпорация SPEC постоянно работает над созданием новых тестовых систем, улучшением и обновлением ранее выпущенных. Это например, популярные тесты, использующие реальные, широко распространенные приложения SPEC for Maya 6, SPEC for 3ds max 6, SPEC for SolidWorks 2003, SPEC viewperf и т. д.

Кроме тестов SPEC в последние годы появилось еще несколько систем тестирования, созданных некоммерческими организациями. В основном эти системы ориентированы на приложения баз данных и другие невычислительные классы приложений. Можно упомянуть, скажем, системы тестирования TPC-A, TPC-B, TPC-C Совета по оценке производительности обработки транзакций TPC (от Transaction Processing Performance Council) и большой набор тестов SAP (от Standard Application Benchmark).

Transaction Processing Council (TPC) – тестовый набор для измерения производительности системы при обработке транзакций, состоящих из обращений и обновлений базы данных. TPC-C – бенчмарк для оценки работы на сложных запросах. TPC-H – бенчмарк для оценки принятия решений при выполнении не связанных запросов, т.е. когда предыдущие запросы не могут быть использованы для оптимизации следующих. TPC-W – транзакционный Web-бенчмарк. Эмулирует активность бизнес-ориентированного транзакционного Web-сервера. TPC-App – бенчмарк для серверов приложений и Web-сервисов. Нагрузка эмулирует работу сервера приложений в режиме 24/7. Метрика: количество транзакций в секунду с ограничением на максимальное время обработки транзакции. Также включаются соотношение цена-качество (cost-performance).

В последнее время популярность приобрели комплексные методики тестирования производительности компьютеров, основанные на комплексах программ из различных областей применения. В частности, в тестовый комплекс включают программы архивации, моделирования физических процессов, растровой и трехмерной графики, автоматизации проектирования, кодирования мультимедийных данных, игровые и некоторые другие программы. В комплексы часто включают программы 7-zip, WinRAR, CPU, RightMark, Adobe Photoshop, 3DMark, PC Mark, Web Mark, VeriTest Business Winstone, Veritest Multimedia, Content Creation Winstone, SiSoftware Sandra, Adobe Acrobat Distiller, ABBYY Fine Reader, DOOM. Следует отметить, что набор средств, используемых для комплексной оценки производительности вычислительных систем, постоянно изменяется и довольно сильно зависит от массовых предпочтений, установившихся в период тестирования.

Цель тестовых наборов – предсказание реальной производительности компьютерной системы. Однако достоверность предсказания может ухудшаться с течением времени. Это вызвано возможностью «взлома» тестового набора, когда осуществляется целевая оптимизация системы именно под данный тестовый набор или агрессивная интерпретация правил использования набора. Почти 70% программ из каждого набора SPEC отбраковывалось в следующем релизе.

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