19
Бенчмарки как критерий естественного отбора Сергей Катков Intel Corp.

CodeFest 2012. Катков С. — Бенчмарки как критерий естественного отбора

Embed Size (px)

Citation preview

Page 1: CodeFest 2012. Катков С. — Бенчмарки как критерий естественного отбора

Бенчмарки как критерий

естественного отбора Сергей Катков

Intel Corp.

Page 2: CodeFest 2012. Катков С. — Бенчмарки как критерий естественного отбора

2

Материалы, размещенные в данной презентации (далее по тексту — "материалы"), предоставлены корпорацией Intel (далее по тексту — "Intel") в качестве услуги потребителям, потенциальным потребителям ее продукции и потенциальным клиентам исключительно в информативных целях. Обозначения и наименования Intel, Intel®, логотип Intel, являются наименованиями и/или товарными знаками, права на которые принадлежат корпорации Intel или ее подразделениям на территории США и других стран. *Другие наименования и товарные знаки являются собственностью своих законных владельцев. Результаты тестирования и рейтинговые показатели, полученные с применением конкретных компьютерных систем и/или их компонентов, отражают приблизительную производительность продукции Intel по данным упомянутого тестирования. Всякое отличие в компоновке или конфигурации аппаратных средств или программного обеспечения может сказаться на реальных показателях производительности. Для оценки производительности тех или иных систем или компонентов перед их приобретением покупателям следует обратиться к другим источникам информации. Дополнительные сведения о результатах тестирования и о показателях производительности продукции Intel доступны в Интернете по адресу http://www.intel.com/performance/resources/limits.htm либо по телефону в США 1-800-628-8686 или 1-916-356-3104.

Copyright © 2011 Intel Corporation. Данные материалы охраняются авторским правом и защищены нормами международного законодательства об охране авторских прав и соответствующих международных соглашений. Без предварительного письменного согласия корпорации Intel не допускается их копирование, воспроизведение, внесение в них изменений, публикация, загрузка, размещение их в Интернете, пересылка или распространение любыми способами. Если данным документом недвусмысленно не предусмотрено иное, корпорация Intel и ее поставщики не предоставляют пользователю каких-либо прав собственности, как явных, так и подразумеваемых, в отношении каких-либо патентов, авторских прав, товарных знаков или сведений, составляющих коммерческую тайну. Иные права могут быть предоставлены Вам корпорацией Intel либо в письменной форме, либо путем внесения соответствующих положений в документацию, сопровождающую материалы. МАТЕРИАЛЫ ПРЕДОСТАВЛЯЮТСЯ ПО ПРИНЦИПУ "КАК ЕСТЬ", БЕЗ КАКИХ-ЛИБО ЯВНЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ ГАРАНТИЙ, ВКЛЮЧАЯ, В ЧИСЛЕ ПРОЧЕГО, ГАРАНТИЙ В ОТНОШЕНИИ ИХ РЫНОЧНЫХ КАЧЕСТВ, НЕНАРУШЕНИЯ ПРАВ НА ИНТЕЛЛЕКТУАЛЬНУЮ СОБСТВЕННОСТЬ ИЛИ ПРИГОДНОСТИ К ИСПОЛЬЗОВАНИЮ В ТЕХ ИЛИ ИНЫХ КОНКРЕТНЫХ ЦЕЛЯХ. НИ ПРИ КАКИХ ОБСТОЯТЕЛЬСТВАХ КОРПОРАЦИЯ INTEL ИЛИ ЕЕ ПОСТАВЩИКИ НЕ НЕСУТ КАКОЙ-ЛИБО ОТВЕТСТВЕННОСТИ ЗА УЩЕРБ (ВКЛЮЧАЯ, В ЧИСЛЕ ПРОЧЕГО, УПУЩЕННУЮ ВЫГОДУ, ПОСЛЕДСТВИЯ ПРИОСТАНОВКИ ПРЕДПРИНИМАТЕЛЬСКОЙ ДЕЯТЕЛЬНОСТИ ИЛИ ПОТЕРЮ ДАННЫХ), ВЫТЕКАЮЩИЙ ИЗ ФАКТА ИСПОЛЬЗОВАНИЯ МАТЕРИАЛОВ, ЛИБО НЕВОЗМОЖНОСТИ ИХ ИСПОЛЬЗОВАТЬ, ЧТО РАСПРОСТРАНЯЕТСЯ И НА ТЕ СЛУЧАИ, КОГДА КОРПОРАЦИЯ INTEL БЫЛА ПРЕДУПРЕЖДЕНА О ВОЗМОЖНОСТИ НАНЕСЕНИЯ ТАКОГО УЩЕРБА. УЧИТЫВАЯ, ЧТО ЗАКОНОДАТЕЛЬСТВО, ДЕЙСТВУЮЩЕЕ В РЯДЕ ЮРИСДИКЦИЙ, НЕ ДОПУСКАЕТ ОГРАНИЧЕНИЯ ИЛИ ОТКАЗА ОТ ОТВЕТСТВЕННОСТИ ЗА ПОБОЧНЫЙ ИЛИ КОСВЕННЫЙ УЩЕРБ, ИЗЛОЖЕННОЕ ВЫШЕ ПОЛОЖЕНИЕ МОЖЕТ К ВАМ НЕ ОТНОСИТЬСЯ. Корпорация Intel и ее поставщики не гарантируют точности или полноты текстовой или графической информации, ссылок и иного содержания материалов. Корпорация Intel вправе в любое время и без предварительного уведомления вносить любые изменения в указанные материалы, а равно и в продукцию, описанием которой они служат. Корпорация Intel не берет на себя каких-либо обязательств по обновлению материалов.

Бенчмарки как критерий естественного отбора

Page 3: CodeFest 2012. Катков С. — Бенчмарки как критерий естественного отбора

Бенчмарк – это тест на производительность.

Бенчмарк может измерять:

• Кол-во операций в секунду

• Среднее/Максимальное время исполнения одной операции

• Энерго-эффективность одной операции

• Масштабируемость

• ...

Что такое бенчмарк

3 Бенчмарки как критерий естественного отбора

Все что угодно, связанное с производительностью

Page 4: CodeFest 2012. Катков С. — Бенчмарки как критерий естественного отбора

Продукт

Пользователи – Бенчмарк – Производители

4 Бенчмарки как критерий естественного отбора

Продукт

Продукт Продукт

Бенчмарк Пользователи Производители

Page 5: CodeFest 2012. Катков С. — Бенчмарки как критерий естественного отбора

Типы бенчмарок

5 Бенчмарки как критерий естественного отбора

Реальные приложения Микро-бенчмарки

Бенчмарки библиотек Синтетические бенчмарки

Page 6: CodeFest 2012. Катков С. — Бенчмарки как критерий естественного отбора

Синтетические бенчмарки

6 Бенчмарки как критерий естественного отбора

Business Applications Performance Corporation

Embedded Microprocessor Benchmark Consortium

Standard Performance Evaluation Corporation

Transaction Processing Performance Council

Brands, logos and product names appearing on this page are trademarks or registered trademarks of their respective holders.

Общепризнанные бенчмарки сделанные

некоммерческими организациями

Page 7: CodeFest 2012. Катков С. — Бенчмарки как критерий естественного отбора

SPEC - бенчмарки

7 Бенчмарки как критерий естественного отбора

CPU Graphics Workstation

MPI/OMP

Mail Servers

NFS

Power

SIP SOA

Virtualization

Web Servers

Java Client/Server

Page 8: CodeFest 2012. Катков С. — Бенчмарки как критерий естественного отбора

SPECjbb2005 – оценка производительности серверов для

типичных бизнес приложений на Java. Эмулирует обработку

заказов для оптового поставщика.

SPECjEnterprise2010 – оценка производительности всей системы,

на которой работает сервер приложений, база данных и

соответствующая инфраструкутра.

SPECjms2007 – оценка производительности серверов

использующих JMS (Java Message Service)

SPECjvm2008 – оценка производительности JRE (состоит из

нескольких реальных приложений и синтетических приложений

тестирующих core Java API).

SPECpower_ssj2008 – комбинированная бенчмарка,

оценивающая производительность и потребление энергии

одновременно.

SPEC – Java бенчмарки

8 Бенчмарки как критерий естественного отбора

Page 9: CodeFest 2012. Катков С. — Бенчмарки как критерий естественного отбора

SPEC – что можно найти?

9 Бенчмарки как критерий естественного отбора

? Лицензия

Результаты

Описание

Участие

Page 10: CodeFest 2012. Катков С. — Бенчмарки как критерий естественного отбора

А подходит ли мне синтетическая бенчмарка?

10 Бенчмарки как критерий естественного отбора

Хммм.. А похоже ли мое приложение на синтетическую бенчмарку?

Подробно изучайте описание бенчмарки

Поищите другие бенчмарки

Настройте бенчмарку

Page 11: CodeFest 2012. Катков С. — Бенчмарки как критерий естественного отбора

• Выбор целевой аудитории для бенчмарка

• Контакты с тем, кто оперирует на этом рынке для определения

стандартых сценариев

• Сбор статистики об всех типах операций со многих приложений из этой

области

• Создания сценария на основе пропорций типов операций

• Тестирование

• Определение правил запуска бенчмарка, чтобы

сделать возможным корректное сравнение результатов

• Ревью бенчмарка всеми компетентными сторонами

• Выпуск бенчмарка

Как создаются синтетические бенчмарки?

11 Бенчмарки как критерий естественного отбора

Для любого бенчмарка важно, чтобы она была широко признана средой.

Иначе ей не будут доверять и не будут использовать!

Page 12: CodeFest 2012. Катков С. — Бенчмарки как критерий естественного отбора

• Повторяемость результата – что делать, если вы все время

получаете разный результат?

• Репрезентативность – сценарий должен соответствоать

реальному использованию.

• Легкость запуска – бенчмарк прийдется запускать много раз, вы

можете например тьюнить систему. Запуск бенчмарки не

должен быть головной болью.

• Верифицируемость – бенчмарк должен убедиться, что работа

реально выполнялась.

• Метрики должны быть ясны – вы четко должны понимать, что

именно вы получаете.

• Анализируемость – бенчмарк должен

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

Некоторые из аттрибутов хорошего бенчмарка

12 Бенчмарки как критерий естественного отбора

Page 13: CodeFest 2012. Катков С. — Бенчмарки как критерий естественного отбора

List<IterationStatus> result = new ArrayList<IterationStatus>();

private long test() {

long time = System.nanoTime();

for(int i = 0; i < N; i++) {

long startResponseTime = System.nanoTime();

func(); // метод, выполняющий математическое вычисление

result.add(new IterationStatus(System.nanoTime() - startResponseTime), …);

// Создаем очень большое кол-во новых объектов => GC

}

long endTime = System.nanoTime();

double avgTime = ((double)(endTime – startTime)) / N;

return (long) (1000000000d / avgTime); // Кол-во операций в секунду

}

Специфика Java - GC (Garbage Collection)

13 Бенчмарки как критерий естественного отбора

Page 14: CodeFest 2012. Катков С. — Бенчмарки как критерий естественного отбора

private long test() {

long time = System.nanoTime();

func(); // метод, создающий большое кол-во новых объектов

// Возможно при втором запуске этого метода, произойдет

вызов GC,

// Но мы этого не увидим => неверный результат

long endTime = System.nanoTime();

return endTime – startTime;

}

Специфика Java - GC (Garbage Collection)

14 Бенчмарки как критерий естественного отбора

Page 15: CodeFest 2012. Катков С. — Бенчмарки как критерий естественного отбора

private long test() {

long time = System.nanoTime();

for(int i = 0; i < N; i++) {

func(); // тестируемый метод

}

long endTime = System.nanoTime();

double avgTime = ((double)(endTime – startTime)) / N;

return (long) (1000000000d / avgTime); // Кол-во операций в

секунду

}

Специфика Java - JIT (Just In Time compilation)

15 Бенчмарки как критерий естественного отбора

Если N мало, то мы будем измерять Интерпретатор Используйте разогрев!!!

Page 16: CodeFest 2012. Катков С. — Бенчмарки как критерий естественного отбора

private long test() {

for(int i = 0; i < N; i++) { // разогрев

func(); // тестируемы метод

}

long time = System.nanoTime();

for(int i = 0; i < N; i++) {

func(); // тестируемы метод

}

long endTime = System.nanoTime();

double avgTime = ((double)(endTime – startTime)) / N;

return (long) (1000000000d / avgTime); // Кол-во операций в секунду

}

Специфика Java - JIT (Just In Time compilation)

16 Бенчмарки как критерий естественного отбора

Если Вы тестируете апплет, который будет исполняться только один раз, то Вы получите слишком оптимистичный результат!!!

Page 17: CodeFest 2012. Катков С. — Бенчмарки как критерий естественного отбора

private long test() {

for(int i = 0; i < N; i++) { // разогрев

func(); // тестируемы метод

}

long time = System.nanoTime();

for(int i = 0; i < N; i++) {

func(); // тестируемы метод

}

long endTime = System.nanoTime();

double avgTime = ((double)(endTime – startTime)) / N;

return (long) (1000000000d / avgTime); // Кол-во операций в секунду

}

Специфика Java - JIT (Just In Time compilation)

17 Бенчмарки как критерий естественного отбора

Результат вычислений нигде не используется, JIT может просто выбросить этот код.

private void func() { double x = Math.sqrt(2012d); }

Page 18: CodeFest 2012. Катков С. — Бенчмарки как критерий естественного отбора

• Используйте бенчмарки для оценки производительности

• Оценивайте релевантность бенчмарки Вашим целям

• Используете бенчмарки, которые признаны или которым Вы

целиком доверяете

• Критически относитесь к результатам бенчмарок, которые

получены из недостоверных источников

• Если Вы создаете свой бенчмарк:

• Убедитесь, что бенчмарк реально тестирует, то что Вы ожидаете

• Убедитесь, что тестирумый код реально работает

• Сравните полученный результат с ожиданием

• Проверьте бенчмарк в разных условиях и сравните результаты

• Объясните и докажите себе, что полученный результат

действительно правильный

Заключение

18 Бенчмарки как критерий естественного отбора

Page 19: CodeFest 2012. Катков С. — Бенчмарки как критерий естественного отбора

Вопросы

19 Бенчмарки как критерий естественного отбора