Pull to refresh
0

Использование Intel Concurrency Checker на практике – одни вопросы…

Reading time4 min
Views4.3K
Picture 11
В последние полгода на меня активно валятся предложения «пощупать» Intel Concurrency Checker, как напрямую из партнерской программы Intel, так и косвенно, например, в блоге Сергея Вильянова (здесь). Я довольно долго отказывался от этого заманчивого предложения. И вот недавно я сдался. Под катом — мой опыт использования этого инструмента. Сразу скажу, что меня инструмент оставил в полном недоумении. Почему? Сейчас расскажу. Заранее отвечу на вопрос, что этот пост делает в блоге Интел. Я думаю высказывать замечания к продукции компании лучше здесь, а не в личном блоге.



Итак, официальная страница на сайте Intel гласит:

Средство Intel Concurrency Checker для оценки производительности многоядерных процессоров. Используйте средство Intel Concurrency Checker, чтобы оценить, насколько хорошо масштабируется производительность вашего приложения в системе на базе многоядерного процессора.

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

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

«Что бы мне проверить на многозадачность?», — подумал я и запустил Starcraft 2 :-). Нет, не подумайте, что мне сразу захотелось поиграть. Дело в том, что для оценки приложения в Concurrency Checker это приложение необходимо запустить и дать ему поработать 30 секунд. Concurrency Checker в это время считает загрузку процессора, использование ядер и т.п. Так вот по результатам измерения Starcraft 2 я получил следующую картинку.
Picture 12
Хотя из таблички можно догадаться, что Starcraft 2 является многоядерным приложением, инструкция к Concurrency Checker на русском языке все-таки не повредит.

В разработчиках Starcraft 2 никто и не сомневался. Поэтому интересно же оценить свое приложение, например, (ага) статический анализатор кода PVS-Studio. Поскольку PVS-Studio работает как модуль расширения (плагин) для Microsoft Visual Studio, то фактически надо оценивать работу этой среды.
Picture 14
Результат получился ожидаемый.
Picture 15
Как и предполагалось, процент загрузки процессора в среднем составил 1,61%, так как сама среда Visual Studio практически и не работала. Ведь модуль анализа кода PVS-Studio.exe — это отдельное приложение, которое запускается для каждого анализируемого файла (со своим набором параметров).

Может быть, если запустить только сам модуль анализа PVS-Studio.exe (например, на выполнение внутренних тестов) результат будет неожиданным?
Picture 16
Нет, результат опять ожидаемый. Модуль анализа PVS-Studio.exe — это однопоточное приложение без какого-либо параллелизма. Это абсолютно логично и понятно, так как в анализаторе параллелизм достигается за счет анализа нескольких файлов параллельно, то есть за счет параллельного запуска нескольких версий PVS-Studio.exe. И, конечно же, такую конфигурацию Concurrency Checker «не распознает» и показывает, что все плохо.

Ладно, дадим инструменту задачку попроще. Проверим, насколько эффективно используются несколько ядер в архиваторе 7z.
Picture 17
В табличке видно, что 7z очень круто управляется с несколькими ядрами. Но у меня вопрос! Разве из Task Manager не видно того же самого?
Picture 18
Вроде видно… Так что для меня, честно говоря, осталось загадкой, кому нужна программа Intel Concurrency Checker. И вот почему:
  1. Используется ли несколько ядер или нет, можно всегда посмотреть в Task Manager.
  2. Команда программистов, разрабатывающая тот или иной проект всегда сама без всяких инструментов знает, как в их коде дела с параллельностью. Если никто никогда «не параллелил» код, то и не откуда взяться поддержке нескольких ядер.
  3. Для более мощного анализа параллелизма и поиска узких мест нужны более другие инструменты типа Intel VTune — тоже всем понятно.

Кстати программа позволяет сохранить лог измерений в Intel и получить комментарий специалиста. Но и с этим какая-то неясность. В случае с нашим анализатором PVS-Studio если я отошлю лог измерений Visual Studio, то это будет неправильный замер. Если я отошлю лог замеров самого модуля анализа — так я и так знаю, что он однопоточный. Не понятно...

Правда никакой лог отослать мне не удалось, так как в разделе сайта «Отправить отчет» я получал такую же белую картинку, как и на первом рисунке.

Вопросы к этой программе у меня связаны с тем, что текущая версия имеет номер аж 3.5! Что удивительно, так как чего в ней можно развивать не понятно. Более того, я уж думал, что она как появилась, так сразу и 3.5 стала. Но нет, в 2008 году, например, была версия 2.1 этого инструмента. Так что она имеет довольно большой жизненный цикл (к удивлению).

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

P.S. Казалось бы, причем здесь Интел? В отличие от Первого канала, на котором никто никогда не критикует себя, в технологических компаниях полезно получить критику от человека с незамыленным взглядом. И может быть Интел поправит позиционирование этой программы, сказав для чего же она нужна. А может окажется, что не очень-то она и нужна :-).
Tags:
Hubs:
Total votes 22: ↑17 and ↓5+12
Comments9

Articles

Information

Website
www.intel.ru
Registered
Founded
Employees
5,001–10,000 employees
Location
США
Representative
Анастасия Казантаева