Тестирование совершенно необходимо и его результаты явно или опосредованно используются
на всех этапах жизненного цикла вычислительной кластерной системы. Ниже,
приведены некоторые требования, которым должны удовлетворять тесты, для того чтобы
они могли быть использованы в заявленных целях:
-
Полнота. Тест должен
оценивать только те параметры, для оценки которых создавался. Выдаваемые
результаты должны быть непротиворечивыми, лаконичными и легкими для понимания.
-
Легкость в использовании.
-
Масштабируемость. Тест
должен быть доступен для большого числа разного по вычислительной мощности
аппаратного обеспечения.
-
Переносимость. Тест
должен быть доступен для большого числа разного по архитектуре аппаратного
обеспечения. Основной чертой переносимости является язык программирования, и,
соответственно, наличие компилятора под данную платформу.
-
Репрезентативность. Вне
зависимости от платформы тест должен загружать систему аналогично
используемыми пользователями приложениями. Результаты сходных по структуре
тестов должны быть сопоставимы.
-
Доступность. Тест должен
быть доступен, в том числе и его исходный код. Однако если тест
распространяется вместе со своими исходными кодами, то при представлении
результатов должна быть указанна версия и все внесенные изменения.
-
Воспроизводимость. При
необходимости должна быть возможность повторить тест с получением аналогичных
результатов. Для этого при публикации результатов необходимо предоставлять
исчерпывающую информацию о программном и аппаратном обеспечении.
Все
тестовые программы, удовлетворяющие указанным требованиям (а их в настоящий
момент существует множество) можно классифицировать следующим
образом:
-
«Игрушечные» тесты (toy benchmarks) —
маленькие, длиной в несколько сот строк исходного кода. Как правило, такие
тесты представляют собой решение какой-либо широко известной математической
задачи – быстрая или пирамидальная сортировка, перемешивание и т.д.
-
Микротесты (microbenchmarks) — специализированные,
ориентированные на определение какой-то одной из основных количественных
характеристик аппаратного обеспечения – среди тестируемых характеристик может
быть:
- производительность центрального процессора;
- производительность и пропускную способности
локальной оперативной памяти;
- скорость базовых операции ввода/вывода;
- производительность и
пропускная способность коммуникационной среды.
В это
группу входят тесты, оценивающие производительность операций, требующих
синхронизации, и тесты операционной системы (переключение контекстов,
системные вызовы и создание процессов). Часто микротесты объединяются в пакеты
тестов.
-
Ядра (kernels) — это
фрагменты кода, взятые из реальных приложений. Поскольку при выполнении
приложения проводят большую часть времени именно в этих фрагментах, ядра
позволяют достаточно объективно определить скорость исполнения реальной
программы на разных платформах.
-
Синтетические
тесты (synthetic benchmarks) оценивают производительность на
основе набора большого количества показателей и не привязаны к какому-либо
отдельному приложению.
-
Приложения (application
benchmarks) — наиболее часто используемые
программы для реализации тех или иных реальных задач. К этому же классу
можно отнести и псевдоприложения. Псевдоприложения – это программы,
созданные на основе реальных приложений, но адаптированные по разным причинам
специально для задач тестирования.
-
Пакеты тестов
(benchmarks suites) — коллекции различных типов тестов с преобладанием
приложений.
Применительно
к тестированию кластерных систем в настоящий момент традиционно преобладают
тесты, относящиеся к классу ядер
(Linpack,
NAS Parallel Benchmarks), приложений
(NAS Parallel Benchmarks) и некоторых микротестов, как правило, тестирующих
коммуникационную составляющую (Netperf, тесты лаборатории параллельных
информационных технологий НИВЦ МГУ). Поэтому, в силу своей широкой
распространенности и полноты охвата, в дальнейших разделах будут рассматриваться
именно эти тесты.