Я работаю над улучшением сборки для нескольких проектов. Я значительно улучшил время сборки, и сейчас я нахожусь в точке, где я думаю, что узкие места более тонкие.
Сборка использует make-файлы в стиле GNU. Я генерирую серию файлов зависимостей (.d
) и включаю их в make-файл, иначе ничего сложного не происходит (например, нет предварительно скомпилированных заголовков или других механизмов кэширования).
Сборка занимает около 95 секунд на 32-ядерном Sparc Ultra, работающем с 16 потоками параллельно. Время простоя составляет около 80% во время сборки, а время ядра колеблется между 8-10%. Я поместил код в / tmp, но большинство файлов поддержки компилятора смонтированы по NFS, и я считаю, что это может создавать узкое место в производительности.
Какие существуют инструменты для измерения и отслеживания подобных проблем?