Использование более 4 ядер с VCBuild

Я пытаюсь использовать все 12 ядер нашего сервера сборки, но не могу указать /M12 и заставить все 12 ядер работать над сборкой. Похоже, что /M4 является пределом. Это правда? Что я могу сделать, чтобы использовать все 12 ядер в наших сборках?

Я использую следующую командную строку для запуска сборки:

"C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\vcpackages\vcbuild.exe" /M12 C:\Projects\solution1.sln

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

1) Build started: Project: Project1, Configuration: Release

Если я использую /M4 в командной строке вместо /M12, сборка идет намного быстрее, и я получаю это в качестве начального вывода:

5) Build started: Project: Project5, Configuration: Release
1) Build started: Project: Project1, Configuration: Release
2) Build started: Project: Project2, Configuration: Release
7) Build started: Project: Project7, Configuration: Release

Я также пытался не указывать количество ядер, но он обрабатывает его так, как если бы у машины было только одно ядро, или как если бы я указал /M1.

Я проверил системную переменную среды NUMBER_OF_PROCESSORS, и она по-прежнему установлена ​​в 12.

Любая помощь с этим будет оценена.

-Seth

1 ответ

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

Например, мое понимание (не стесняйтесь исправлять):

  1. VCBuild не может распараллелить внутри проекта
  2. VCBuild не может распараллелить два проекта, когда "ProjectA"является обязательным условием (связано с)"ProjectB". Скорее, ProjectA будет построен, а затем ProjectB будет построен, (какие ссылки в результатах из предыдущего ProjectA строить). Тем не мение, "ProjectA.lib"может строить параллельно"ProjectB.lib", когда они оба тогда связаны в"ProjectC.exe"(хотя ни ProjectA ниProjectB может быть построен параллельноProjectC).

Таким образом, в зависимости от ваших проектов, кажется возможным, что VCBuild видит только четыре проекта, которые могут быть построены одновременно?

(ПРИМЕЧАНИЕ: ИМХО, нет фундаментальной причины для двух вышеуказанных ограничений; скорее, у меня сложилось впечатление, что оба ограничения связаны с историческими внутренними / техническими причинами, поскольку VCBuild на самом деле не предназначен для "масштабируемого сервера сборки".)

Другие вопросы по тегам