Incredibuild что это за программа

Разработка

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

В основе Incredibuild лежит уникальная технология виртуализации Virtualized Distributed Processing™. Принцип прост: когда рабочая нагрузка, состоящая из нескольких параллельных процессов, выполняется с помощью Incredibuild, ее процессы автоматически и динамически распределяются между простаивающими процессорами на удаленных машинах в вашей сети или облаке.

Особенности технологии Incredibuild

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

Усилия, необходимые для поддержания Incredibuild, близки к нулю. Нет необходимости иметь доступ к хранилищу изображений виртуальной машины или копировать файлы, скрипты или наборы инструментов на удаленные машины. Вы даже можете работать с различными версиями операционной системы. Технология Incredibuild без проблем делает эту работу за вас.

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

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

Преимущества использования

Для разработчиков:

Не нужно больше ждать окончания сборки!

Для менеджеров релизов:

Не выбирайте между скоростью и качеством!

Для бизнеса:

Выпускайте продукт быстрее или это сделает кто-то другой!

Источник

Incredibuild что это за программа

Каталог > Вендоры > IncrediBuild Software Ltd.

IncrediBuild Software Ltd.

Компания IncrediBuild Software Ltd, разработчик ПО IncrediBuild, является ведущим поставщиком решений в области технологии ускорения программного обеспечения. IncrediBuild ускоряет ПО Windows за счет задействования неиспользуемых вычислительных мощностей в частных и общедоступных облачных средах при одновременной легкости развертывания и миграции. Благодаря уникальной технологии виртуализации процессов, IncrediBuild де-факто стал стандартным решением для ускорения построения кода приложений. Более 120000 пользователей более чем из 2000 компаний и организаций полагаются на приложения IncrediBuild и ускорение сборки кода, в том числе 20 компаний из списка Fortune 100.

Благодаря уникальному решению для параллельной обработки IncrediBuild вы легко сможете добиться значительного ускорения процесса сборки приложений. IncrediBuild превращает вашу сеть в виртуальный суперкомпьютер, задействуя холостые циклы ЦП удаленных компьютеров, даже если эти компьютеры используются. Для этого не требуется никаких изменений в исходном коде, и никакого дополнительного оборудования. Неудивительно, что более 100000 пользователей более чем из 2000 организаций доверяют IncrediBuild ускорение сборки своих приложений.

IncrediBuild ускоряет сборку благодаря эффективному распараллеливанию задач. Благодаря использованию свободных ресурсов ЦП, имеющихся в сети, IncrediBuild превращает сеть из ПК и серверов в частное вычислительное облако, которое лучше всего можно охарактеризовать как «виртуальный суперкомпьютер». Процессы распределяются для параллельной обработки на ресурсах удаленных ЦП, что значительно сокращает время сборки, до 90% и более. Кроме того, IncrediBuild может интегрироваться с облачными платформами, такими как Microsoft Azure.

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

IncrediBuild позволяет расширять возможности вашего облака, чтобы они не ограничивались только вычислительной мощностью вашей собственной сети. С IncrediBuild, службе ИТ и разработчикам не нужно беспокоиться об ограниченных ресурсах в моменты пиковых нагрузок. Они могут масштабировать свою инфраструктуру прямо в облако, сочетая дополнительную процессорную мощность с возможностями ускорения IncrediBuild для получения максимальной производительности. IncrediBuild в облаке означает, что вам не потребуется устанавливать какие-либо виртуальные машины, перемещать данные в облако или настраивать какие либо системы. Он уже настроен и готов к работе.

IncrediBuild по мере необходимости добавляет себе облачные ресурсы Azure и увеличивает вычислительную мощность, требуемую для сборки, обеспечивая быстрое и прозрачное развертывание агентов в среде Azure. Как только пользователь выбирает облако, технология распределенных вычислений IncrediBuild начинает выполнять их параллельно, используя оптимальное количество процессоров среды Azure.

За счет утилизации неиспользуемой мощности сети устраняется необходимость в дорогостоящем специализированном оборудовании. Используются холостые циклы ЦП компьютеров локальной сети, даже если эти компьютеры используются на других задачах. IncrediBuild может работать на любом компьютере под управлением Windows, включая одноядерные машины, многопроцессорные машины и многоядерные серверы, и даже масштабируется до общего облака.

Откройте для себя разницу в ускорении! Попробуйте решения IncrediBuild для ускорения разработки:

IncrediBuild для Visual Studio:

Полная интеграция с Visual Studio уменьшает время сборки на всех версиях Visual Studio, включая Visual Studio 2013 и предварительные версии Visual Studio 2015. Сертифицированный отраслевой партнер Visual Studio.

IncrediBuild для Make & Build Tools:

Ускоряйте сборочные платформы, включая Make, MSBuild, Gmake, CMake, VSimake, Jam, nAnt, Jom, Python, VsiMake, BJam, Jam + и многие другие.

IncrediBuild для Dev Tools:

Сокращайте цикл разработки ПО за счет более быстрых модульного тестирования, сценариев QA, анализа кода, генерации кода, обработки изображений и сжатия.

Узнать цены и условия поставки на продукты компании IncrediBuild Software Ltd., а так же получить консультацию по лицензированию Вы можете отправив нам запрос.

Источник

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

Об инструментах 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 поток.

Тест первый

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

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

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

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

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

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

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

Тест второй

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

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

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

Заключение

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

Если хотите поделиться этой статьей с англоязычной аудиторией, то прошу использовать ссылку на перевод: Svyatoslav Razmyslov. Using IncrediBuild to Assist Analysis of a Large Project by PVS-Studio.

Источник

Интеграция PVS-Studio с системой распределённой сборки IncrediBuild

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

Введение

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

В последнее время к нам стали обращаться пользователи PVS-Studio с просьбой добавить поддержку IncrediBuild в наше решение. Мы связались с командой разработчиков IncrediBuild и попросили содействия. Команда IncrediBuild с радостью откликнулась, и теперь мы готовы поделиться способом как совместно использовать PVS-Studio и IncrediBuild.

Сейчас (в версии PVS-Studio 5.25) пользователь, установивший PVS-Studio на свою машину, не увидит в меню своей IDE пункта «проверить проект в PVS-Studio с помощью IncrediBuild». Возможно, что в следующих версиях PVS-Studio такой пункт меню появится. Но уже сейчас пользователь IncrediBuild может получить выгоды от этой системы при использовании PVS-Studio. Нужно только чуть-чуть магии. И в этой статье рассказано, какие заклинания надо произнести.

Как работает PVS-Studio?

Какую цель может преследовать человек, желающий интегрировать PVS-Studio с IncrediBuild? Думаю, вполне очевидно, что конечной целью этого должно стать уменьшение времени, необходимого для анализа исходных файлов. Давайте разберёмся, что же, на самом деле, представляет собой «проверка кода в PVS-Studio» и как его «подсоединить» к IncrediBuild.

IncrediBuild в первую очередь предназначен для распределения сборочных задач между доступными вычислительными ресурсами, то есть между компьютерами разработчиков. Что именно нужно распределять в случае запуска статического анализатора PVS-Studio?

Непосредственную проверку исходных C/C++ файлов PVS-Studio осуществляет с помощью command line утилиты PVS-Studio.exe. Эта утилита – ядро анализатора, по принципу своего использования она очень близка к C++ компилятору. В частности, PVS-Studio.exe требуется запускать каждый раз для проверки каждого исходного файла, передавая в эту утилиту все параметры компиляции этого файла и дополнительные параметры.

Примечание. Параметры компиляции нужны анализатору, так как ему нужно сначала препроцессировать файл. Соответственно, он должен знать какие директивы препроцессора объявлены, где искать заголовочный файлы и так далее.

Стоит отметить, что PVS-Studio.exe не предназначен для «ручного» использования – его нельзя просто «натравить» на директорию с исходными файлами. Как раз для автоматизации этой процедуры запуска и служит плагин PVS-Studio, интегрирующийся в среду разработки Visual Studio. Как вариант можно использовать оболочку PVS-Studio Standalone.

Конечно, в случае использования сборочной системы, отличной от MSBuild, запуск PVS-Studio.exe можно встроить и в другие сборочные системы, однако, это не отменяет того принципа, что PVS-Studio.exe не должен использоваться напрямую пользователем анализатора.

Думаю, теперь нам очевидно, что для оптимизации работы анализатора необходимо распределить процедуру анализа на этапе запуска процессов PVS-Studio.exe. Эта ситуация очень схожа с тем, как Incredibuild работает при обычной сборке проекта – распределяет запуски компиляторов (например, cl.exe) и линковщиков.

При этом IncrediBuild «обманывает» локальную сборочную систему. MSBuild.exe запускает процессы компиляции и линковки как бы «локально», а IncrediBuild «втихую» разносит непосредственно реальную работу этих процессов по доступному ему вычислительным узлам (компьютерам).

Само собой, очевидно, что IncrediBuild не ограничен в том, какие именно процессы можно разносить по вычислительным узлам. Как же нам с его помощью «обмануть» PVS-Studio? В нашем случае, «обманывать» нам нужно будет того, кто занимается непосредственным запуском процессов PVS-Studio.exe.

Для примера остановимся на том, что пользователь имеет проект в Microsoft Visual Studio, собираемый в MSBuild. Тогда для проверки этого проекта он, скорее всего, будет использовать плагин PVS-Studio для данной IDE. Плагин IDE – это часть самой IDE, поэтому мы можем теперь назвать того, кого нам предстоит «обмануть» – devenv.exe – процесс, который и является той самой Microsoft Visual Studio.

Предположим также, что пользователь PVS-Studio использует статический анализатор, регулярно запуская его на своём «сборочном сервере». Предположим ещё, что проект достаточно крупный (несколько тысяч исходных файлов), ведь иначе у пользователя нет смысла ускорять его проверку.

Всё это означает, что пользователь не будет запускать проверку каждый раз «вручную», выбирая пункт меню ‘Check Solution’. Как же он тогда поступит?

Выше приведена строка запуска анализа PVS-Studio для проекта OmniSample (vs2013).sln, конфигурации Win32|Release. По завершению анализа процесс devenv.exe автоматически завершится. Лог проверки будет сохранён в D:\Test\OmniSample\test.plog. Это – «стандартный» способ использования PVS-Studio из командной строки, про который можно подробнее почитать здесь.

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

Что же произойдёт при выполнении данной команды? Запущенный процесс devenv.exe начнёт параллельно запускать процессы PVS-Studio.exe, как мы говорили ранее, по одному на исходный файл. Сколько парольных процессов будет запущено указано в настройках анализатора и эту настройку можно изменить. По умолчанию, PVS-Studio будет запускать одновременно столько процессов, сколько есть логических ядер в системе.

Как может помочь IncrediBuild?

Предположим теперь, что у нас есть проект из 1000 файлов, и мы запускаем анализ на машине с 4 ядрами. Это означает, что анализатору devenv.exe придётся сделать 250 итераций (по 4 процесса) для того, чтобы успешно проверить весь проект. Как же IncrediBuild может нам помочь?

Предположим, что у пользователя PVS-Studio есть ещё 3 машины, и на каждой также доступно по 4 процессорных ядра. Если бы мы могли «разнести» запуски PVS-Studio.exe по этим 4 машинам, то нам потребовалось бы уже не 250 «итераций», а всего лишь 62,5 (ведь у нас есть 16 ядер).

Для того, чтобы распределить запуски анализаторов на разных компьютерах, воспользуемся command line утилитой IBConsole:

Файл incredi.xml должен при этом иметь такое содержание:

Как видно, мы «перехватываем» активность devenv и позволяем «распределять» процессы PVS-Studio. В файле incredi.bat необходимо прописать строку запуска devenv.exe, приведённую в статье ранее. Также, нужно не забыть сменить в настройках PVS-Studio уровень распараллеливания с 4 до 16.

Предположим, что IncrediBuild заранее был установлен и корректно настроен на 4-х машинах. Теперь после запуска команды ibconsole мы увидим, что запуски PVS-Studio.exe распределяются между этими 4 компьютерами, и общее время анализа сократится.

При этом, на всех машинах, кроме той, на которой выполняется данная команда, нет необходимости держать как PVS-Studio и Visual Studio, так и проверяемые исходники. IncrediBuild об этом позаботится за вас.

На сколько же сократится время анализа? Вначале может показаться, что оно сократится ровно в 4 раза, ведь у нас теперь есть 16 ядер, а не 4. На самом деле, это число будет меньше четырёх, и зависит от очень многих факторов. К этим факторам относится производительность компьютеров, их загруженность другими задачами, пропускная способность сети и много другое. Но можно точно утверждать, что оно будет меньше 4, т.к. в любом случае будет наблюдаться «эффект бутылочного горлышка». Ведь инициатор анализа (devenv.exe), должен обрабатывать результаты запусков PVS-Studio.exe. В наших опытах, при задействовании 4 машин, мы получали ускорение в 2.5-3.5 раза.

Если пользователь захочет всё же запустить анализ вручную, выбрав пункт ‘Check Solution’, то достаточно просто изменить содержимое файла incredi.bat, прописав туда простой вызов devenv.exe – откроется окно Visual Studio, в котором можно будет проделать все эти действия, пользуясь преимуществами распределённого запуска анализаторов. Конечно, это совсем не так удобно, как просто открыть Visual Studio и выбрать там пункт меню «проверить в IncrediBuild», и в будущем такой пункт может действительно появится в меню PVS-Studio.

Заключение

Вы уже сейчас можете использовать совместно IncrediBuild и PVS-Studio в текущих версиях. Если у вас будут какие-то трудности – обязательно пишите нам, и мы поможем.

Если хотите поделиться этой статьей с англоязычной аудиторией, то прошу использовать ссылку на перевод: Paul Eremeev. Integrating PVS-Studio with the IncrediBuild Distributed Build System.

Источник

IncrediBuild: Как ускорить сборку и анализ вашего проекта

Мне нужно больше ядер!

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

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

Отдай!

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

На ком будем проверять?

Для того, чтобы убедиться, что всё функционирует действительно хорошо, нужно было найти качественного подопытного. Так как у нас уже не раз были в статьях и Chromium и Linux, а выделиться как-то хотелось, нужно было найти что-нибудь новое. Поэтому я пошёл в сторону открытых игр (а где же ещё искать большие проекты?). И как вы увидите ниже, очень пожалел об этом решении.

Впрочем, поиск чего-то объёмного труда не составил, да и мне «повезло» повстречать открытый проект на Unreal Engine. Вдуматься только! Я действительно до момента написания этой статьи и подумать не мог, что на UE бывает Open Source.

Да будет сборка на 100+ ядер!

Итак, первым делом нужно поставить агентов на машины других разработчиков. Есть два способа:

попросить коллег в местном Slack;

воззвать к силам сисадмина.

Разумеется, как и любой другой наивный человек, я написал сперва в Slack. Спустя пару дней еле-еле дошло до 12 машин из 20. После этого я воззвал к силам сисадмина и, о чудо, заветная двадцатка была у меня в руке. Так что теперь у меня было около 145 ядер (+/- 10) 🙂

За исключением необходимости поставить агентов (делается это парой кликов в установщике), нужно было поставить себе координатора. Это делается немного сложнее, поэтому оставлю ссылку на доки.

Итак, у нас теперь есть сетка на стероидах, поэтому пришло время добраться до Visual Studio. Выбираем в плагине сборку. А вот и нет 🙂

Если вдруг вы и сами захотите попробовать, то учтите, что сперва нужно собрать проекты ShaderCompileWorker и UnrealLightmass. Так как они не большие, я собрал их локально. Вот теперь уже можно нажать на заветную кнопку:

Итак, какая же получилась разница?

Как видите, нам удалось ускорить сборку с 30 минут до почти 6! Очень даже нехило. Кстати, запуск проводился посреди рабочего дня, так что примерно таких цифр можно ожидать и не на синтетическом тесте. Впрочем, от проекта к проекту разница может быть разной.

Что ещё можно ускорить?

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

Профит в быстром анализе примерно такой же, как и в быстрой сборке: возможность локальных прогонов перед коммитом. Конечно, всегда есть желание залить всё сразу в мастер; но обычно тимлид бывает не в восторге от подобных действий, особенно когда валятся ночные прогоны на сервере. Поверьте мне – я валил 🙁

Настраивать особенно анализатор не нужно, разве что нам не повредит указать старые-добрые 145 потоков в настройках:

Ну и стоит указать местной сборочной системе кто тут анализатор:

Итак, пришло время нажать на сборку ещё раз и насладиться ускорением:

Вышло около семи минут, что подозрительно похоже на время сборки. Тут я и подумал, что видимо забыл добавить флаг. Зашёл в настройки и увидел, что всё на месте. Такого я не ожидал, поэтому отправился курить мануалы.

Попытка запуска PVS-Studio #2

Спустя какое-то время я вспомнил про версию Unreal Engine, которая используется в этом проекте:

После пары кружек бодрящего напитка у меня возникла мысль всё-таки дочитать туториал по интеграции до конца. Помимо указанного выше способа есть ещё и мониторинг компиляции. Это как раз тот вариант, когда ничего уже не помогает.

Первым делом включим сервер мониторинга:

Эта штука будет крутиться на фоне и следить за тобой вызовами компилятора. Но она не может отслеживать происходящее в IncrediBuild, поэтому придётся один раз собрать без него.

На фоне предыдущего запуска локальная пересборка выглядит очень бедно:

Теперь сохраним то, что насобирали в отдельный файл:

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

Сам же анализ запускается вот этой командой:

Только не стоит его так запускать, ведь мы же хотим его запустить под IncrediBuild. Так что закинем эту команду в analyze.bat. И создадим рядом файл profile.xml:

И теперь мы можем запустить всё с нашими 145-ю ядрами:

И как это выглядит в Build Monitor:

Что-то много ошибок на этом графике, не так ли?

К нам закралась ещё одна проблема. И в этот раз дело не в то, что кто-то что-то не поддерживает. Сборка Unreal Tournament оказалась несколько специфичной.

Попытка запуска PVS-Studio #3

Если посмотреть внимательно, то это не ошибки анализа, а неудачи при препроцессировании исходников. Причём, причина данного фейла была одна и та же:

Так в чём проблема? Всё довольно просто – препроцессор требует, чтобы только один из следующих макросов имел значение 1:

Да, вроде как всё собиралось раньше, а теперь что-то страшное вылетело. Пришлось закопаться в логи, а точнее в дамп компиляции. Там-то проблема и нашлась. Дело было в том, что эти макросы объявляются в местном precompile header, а мы хотим только препроцессировать. Так что пришлось добавить все эти макросы вручную:

Самое начало файла build.h

И уже с этим небольшим костылём элегантным решением можно запустить анализ. Причём сборка не сломается, так как мы воспользовались макросом PVS_STUDIO.

Итак, долгожданные результаты анализа:

Согласитесь, почти 15 минут вместо двух с половиной часов – это очень хорошее ускорение. Сложно представить, чтобы вы могли пить кофе 2 часа к ряду и ни у кого не возникло бы сомнений на ваш счёт. А вот 15 минутный перекур вопросов не вызывает. Наверно.

И что у нас в итоге?

Разумеется, что в идеальном мире увеличение количества потоков в N раз увеличило бы скорость сборки в N раз. Но живём мы в совершенно ином мире, поэтому стоит учитывать локальную нагрузку на агентов (удалённые машины), нагрузку на сеть, время на организацию всего этого дела и ещё много деталей, которые скрыты под капотом.

Впрочем, ускорение действительно есть и местами оно позволяет не просто запускать полную сборку или же анализ раз в день, а делать это куда чаще. Например, после каждого фикса или же перед коммитами. А теперь предлагаю посмотреть на то, как это всё выглядит в одной таблице:

Я запустил по пять раз и посчитал среднее по запускам (эти цифры вы и видели в графиках) 🙂

Источник

Операционные системы и программное обеспечение