Мы используем куки, чтобы пользоваться сайтом было удобно.
Хорошо
to the top
close form

Заполните форму в два простых шага ниже:

Ваши контактные данные:

Шаг 1
Поздравляем! У вас есть промокод!

Тип желаемой лицензии:

Шаг 2
Team license
Enterprise license
** Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности
close form
Запросите информацию о ценах
Новая лицензия
Продление лицензии
--Выберите валюту--
USD
EUR
RUB
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

close form
Бесплатная лицензия PVS‑Studio для специалистов Microsoft MVP
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

close form
Для получения лицензии для вашего открытого
проекта заполните, пожалуйста, эту форму
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

close form
Мне интересно попробовать плагин на:
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

close form
check circle
Ваше сообщение отправлено.

Мы ответим вам на


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

  • Промоакции
  • Оповещения
  • Спам

Вебинар: C# разработка и статический анализ: в чем практическая польза? - 18.11

>
>
Incredibuild для проверки большого прое…

Incredibuild для проверки большого проекта с помощью PVS-Studio

24 Июл 2015

PVS-Studio - статический анализатор, выявляющий ошибки в исходном коде приложений на языке C/C++. Подобно компилятору, анализатор обходит файл за файлом в каталоге с исходниками проекта, выполняя свою задачу. Но и без использования внешних инструментов, сборка некоторых проектов может длиться несколько часов. Статический анализ такого проекта будет занимать ещё больше времени. Для сборки крупных проектов, некоторые разработчики прибегают к использованию распределённой сборки с помощью инструмента Incredibuild. В данной статье не будут рассмотрены детали интеграции PVS-Studio в Incredibuild, а будет рассказано о проверке большого проекта, замерах времени и других интересных фактах.

0339_IncrediBuild2_ru/image1.png

Об инструментах PVS-Studio и Incredibuild

PVS-Studio выполняет анализ C/C++ кода и подсказывает программисту, где находятся возможные ошибки, или указывает на участки кода, которые могут повлечь проблемы в будущем.

Анализатор состоит из нескольких частей, и проверку каждого файла с исходным кодом выполняет процесс PVS-Studio.exe (ядро анализатора). Далее я буду использовать термин "поток", подразумевая, что в одном потоке запущен один процесс PVS-Studio.exe для проверки одного исходно файла проекта. А файлов будет очень много....

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

Мы будем использовать Incredibuild, чтобы выполнить анализ проекта во много потоков, используя дополнительные компьютеры.

О проверяемом проекте

Проверяемый проект пожелал быть неназванным, но он имеет около 7 млн. строк исходного кода. Размер кодовой базы - 300 MB, и около 9000 файлов. Проверка такого проекта анализатором PVS-Studio на компьютере с процессором Intel Core i7-4770 3.40 GHz и 16 GB ОЗУ в 8 потоков занимает около 6 часов. Далее я расскажу, как с помощью инструмента Incredibuild и нескольких компьютеров удалось сильно ускорить время анализа проекта.

Результаты

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

При настройке Incredibuild на компьютерах, один из них настраивается как координатор, остальные настраиваются как агенты, которые подключаются к координатору. Т.к. проверка проекта запускалась на агенте, то на этом компьютере в настройках было задано загружать только 1 поток, чтобы излишняя нагрузка не мешала сбору результатов. Для координатора тоже было задано выполнять вычисления только в 1 поток.

Тест первый

Для первого тестового запуска PVS-Studio, были доступны 5 компьютеров:

  • Координатор (1 поток);
  • Агент N1 (1 поток, на нём запускался анализ);
  • Агент N2 (8 потоков);
  • Агент N3 (8 потоков);
  • Агент N4 (8 потоков).

Итого 1 + 1 + 8 + 8 + 8 = 26 потоков для параллельного запуска анализатора для 26 файлов одновременно.

На рисунке 1 представлена проверка проекта анализатором в 26 потоков.

0339_IncrediBuild2_ru/image2.png

Рисунок 1 - Проверка проекта анализатором в 26 потоков

Для читателей, не знакомых с Incredibuild, поясню, что зелёной полоской обозначается 1 процесс, который успешно отработал на компьютере с именем, которое написано слева. На полоске пишется имя процесса. А по временной шкале снизу можно определить, в какой момент времени процесс стартовал и завершился, таким образом сразу видна длительность работы любого распределённого процесса.

На рисунке выше запечатлена проверка довольно крупных исходных файлов. Распараллеливание выполняется очень равномерно и эффективно при длительной загрузке потоков.

На рисунке 2 представлен анализ разных по объёму файлов исходного кода.

0339_IncrediBuild2_ru/image4.png

Рисунок 2 - Проверка мелких и крупных файлов проекта в 26 потоков

Как мы видим, быстрое завершение потоков приводит к накладным расходам на создание новых потоков и происходит небольшое простаивание некоторых компьютеров. Но в целом распараллеливание выполняется очень хорошо. Анализ проекта выполнился за 2 часа 10 минут вместо 6 часов, очень даже неплохо.

Тест второй

Для второго тестового запуска PVS-Studio, были доступны 7 компьютеров:

  • Координатор (1 поток);
  • Агент N1 (2 потока, на нём запускался анализ);
  • Агент N2 (8 потоков);
  • Агент N3 (8 потоков);
  • Агент N4 (8 потоков);
  • Агент N5 (8 потоков);
  • Агент N6 (8 потоков).

Итого 1 + 2 + 8 + 8 + 8 + 8 + 8 = 43 потоков для параллельного запуска анализатора для 43 файлов одновременно.

На рисунке 3 представлена проверка проекта анализатором в 43 потока.

0339_IncrediBuild2_ru/image6.png

Рисунок 3 - Проверка проекта анализатором в 43 потока.

Список из 43 потоков не удаётся увидеть целиком, но хорошо видно, как возросло простаивание компьютеров при проверке маленьких файлов. Но всё равно выглядит очень здорово, учитывая, что общее время анализа составило уже 1 час 24 минуты вместо 6 часов и из приложенных усилий было только быстрая установка Incredibuild на нужные компьютеры. Для настройки PVS-Studio потребовалось изменить всего 1 пункт в настройках - задать количество потоков.

Заключение

Воспользовавшись инструментом Incredibuild, который обычно присутствует для сборки очень крупных проектов, мы смогли ускорить время анализа проекта с помощью PVS-Studio в 4.2 раза, задействовав несколько компьютеров разработчиков, которые сидели рядом. Все настройки Incredibuild использовались по умолчанию, а их там довольно много. Наверняка можно достичь ещё большей производительности, но нам был интересен "быстрый старт".

Ещё раз, что нам потребовалось для быстрой проверки проекта с помощью PVS-Studio:

  • Установить Incredibuild на нужные компьютеры.
  • Увеличить количество потоков в настройках PVS-Studio.
  • Запустить анализ из консоли Incredibuild.

Полученные результаты:

  • Проверка на 1 компьютере - 6 часов.
  • Проверка в 26 потоков - 2 часа 10 минут.
  • Проверка в 43 потока - 1 час 24 минуты.

О том, как использовать PVS-Studio и Incredibuild в своём проекте, вы можете прочесть в статье: "Интеграция PVS-Studio с системой распределённой сборки Incredibuild".

Популярные статьи по теме


Комментарии (0)

Следующие комментарии next comments
close comment form