IZONE - http://www.izcity.com/ - бесплатный софт, вэб-сервисы, ресурсы для раскрутки, свежие номера журнала "Internet Zone".

 IZONE 


Технологии тестирования производительности компьютеров

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

Среди всех единц измерения производительности, единицы MIPS и GFLOPS являются, пожалуй, самыми распространенными. Наиболее безполезным из них является MIPS (Millions of Instructions Per Second), так как она не всегда может дать нам адекватный ответ о производительности процессора. Эта величина получается путем деления колличества выполненных процессором операций на время исполнения. Приведем простой пример - простенькая программа, откомпилированная под CISC-архитектуру, займет, скажем, десять инструкций, а та же программа, откомпилированная под RISC-процессор - двадцать. Запустив приложения, мы увидим, что программы выполняются одно и то же время. Но из этого следует, что при одинаковом объеме работы, проделаным процессорами за одно и то же время, производительность RISC-процессора в единицах MIPS в два раза больше, чем производительность CISC-процессора... Более того, величина MIPS различна не только для разных платформ, но и для разных программ, работающих на одном процессоре, так как различные инструкции исполняются разное время.

Единицы GFLOPS (Giga- Floating Point Operations Per Second), в этом отношении не многим лучше. Они отражают количество операций с плавающей точкой, выполняемое также за секунду времени. Проблема заключается в том, что количество операций с плавающей точкой в различных программах различно, поэтому программа имеющая 30% операций с плавающей точкой и программа имеющая 90% таких операций, исполняющиеся за один промежуток времени будут давать разные значения в GFLOPS.

И кстати, в следующий раз, когда вы увидите значение производительности в MIPS или GFLOPS, на 90% можно, что вы видите перед собой результаты тестирования, полученные производителем оборудования. Данное суждение основавается на двух моментах. Во-первых только производитель будет тратить время на то, чтобы подсчитать, скажем, количество операций с плавающей точкой в своей программе. Во-вторых для производителя выгодно представлять информацию в этих единицах, так как пользователь, как правило, не знает, на каких задачах тестировался процессор. Понятно, что число MIPS для задач, построенных из команд, выполняемых за один такт, будет большим, нежели для программ из двухтактовых команд.

Выходом из сложившейся ситуации может стать тестирование систем на реальных задачах. Действительно, вам ведь в конечном счете важно количество FPS в Quake, или скорость наложения эффектов в Photoshop, а не какие-то там магические числа. В данном случае, такая техника идеально подходит для проверки системы вцелом - процессора, памяти, видеоподсистемы и т.д., но не всегда может дать точные данные о производительности отдельно взятого компонента. Именно поэтому, когда вы видите перед собой результаты теста, то всегда обращайте внимание на конфигурацию тестового компьютера. Кроме того, нужно принять во внимание, что в многозадачных системах процессор всегда выполняет несколько задач. Поэтому общее время выполнения программы складывается из пользовательского времени, когда исполняется код вашей программы, и системного времени когда процессор занят операционной системой или другой задачей. Тестирование при помощи реальных приложений становится еще менее информативным при тестировании различных платформ. Действительно, отдельно взятая программа может быть хорошо оптимизирована для работы с одной платформой, и всего-лишь адаптирована под другую. Хорошим примером здесь может послужить тестирование программы Adobe Photoshop на платформе PC и MAC. Данный тест не скажет вам, насколько, скажем, G3 уделывает Pentium II, он только покажет, насколько лучше Photoshop оптимизирован под платформу Mакинтош, чем под платформу PC. В любом случае, все вышесказанное говорит лишь о том, что тестирование в реальных приложениях может сказать нам только о производительности системы вцелом, но не о скорости процессора, хотя для тестов компьютера целиком лучшего теста чем реальные приложения не найти...

Именно для измерения производительности отдельных компонентов и разрабатываются специальные программы - бенчмарки. Hennessy и Patterson в своей книге "Computer Architecture: A Quantitative Approach" разделяют такие приложения на три категории...

 

  1. Kernel-тесты. Kernel (ядро) это кусок кода реальной программы, интенсивно использующий процессор или другой тестируемый компонент системы и исполняющийся отдельно или в составе общего теста. Идея такого теста снизить до минимума различные системные вызовы и максимально увеличить пользовательское время в процессе исполнения. Одним из наиболее информативных бенчмарков является тест SPEC. Эта программа включает в себя несколько кернелов, каждый из которых ориентирован на выполнение определенного набора инструкций. Тестирование проводится в два этапа - стандартный тест и оптимизированный тест. В первом случае для тестирования выдвигаются жесткие требования на компилятор, и режим компиляции программ-кернелов. В оптимизированных тестах, разрешается использовать бенчмарк-оптимизацию - специальный режим компиляции некоторых сред программирования.

  2. Toy-тесты. Toy (игрушка) в данном случае это маленькие программки, которые делаются таким образом, что могут компилироваться и исполняться на любой машине. Но, по мнению Хеннесси и Паттерсона, такие программы не могут дать адекватного ответа на вопрос о производительности системы.

  3. Третьим типом тестов являются так-называемые синтетические бенчмарки. Синтетические тесты, такие как Dhrystone или Whetstone, пытаются примерно определить смесь инструкций в реальном приложении и в последствии загрузить процессор подобным кодом. Синтетические тесты не являются реальными программаими и иногда не могут в полной мере прогнозировать работу системы в конкретном приложении. Синтетические тесты хорошо применяются для сравнения производительности нескольких компонентов одного класса. Конкретным примером синтетических тестовых программ может служить всем известный WinBench.

Итак, перед тестиованием вам необходимо уяснить себе задачу, которую вы перед собой ставите. Если вам необходимо получить максимальную производительность каких-то определенных задач, то наилучшим тестом для вас будет простое использование секундомера. Однако, обычные приложения (кроме 3D игр), как правило, не дают вам информации о скорости своего исполнения, кроме того, как уже сказано выше, они не смогут датьвам четкого представления о скорости работы отдельного компонента вашей системы. В этом случае вам необходимо использовать бенчмарки. Бенчмарки также полезны для более наглядного представления результатов - некоторые из них сами строят различные графики, диаграммы и т. д., которые, в некоторой степени, могут служить доказательством истинности и реальности представленных результатов. Хотя, конечно, пара минут работы в Фотошопе над полученным скриншотом, и можно стать чемпионом мира по разгону...

Автор: KO/\bKA

Copyright © Россия-Он-Лайн (тм)
Источник: http://www.online.ru/

 


Copyright © "Internet Zone"info@izcity.com
Копирование и использование данных материалов разрешается только в случае указания на журнал "Internet Zone", как на источник получения информации. При этом во всех ссылках обязательно явное указание адреса вэб-сайта http://www.izcity.com/. При наличии у копируемого материала авторов и источника информации - их также нужно указывать, наряду со ссылкой на нас.