4.5. О SBU (Стандартная единица времени сборки)

Многие люди хотели бы знать заранее, сколько примерно времени потребуется для компиляции и установки каждого пакета. Поскольку Linux From Scratch может быть собран на различных системах, невозможно дать точную оценку времени. Сборка самого большого пакета (gcc) займет около 5 минут на быстрых системах, но может занять несколько дней на более медленных компьютерах! Вместо фактического времени в книге используется показатель "стандартная единица времени сборки" (SBU).

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

Например, рассмотрим пакет, время компиляции которого составляет 4,5 SBU. Это означает, что если вашей системе потребовалось 4 минуты для компиляции и сборки первого прохода binutils, то для сборки этого пакета потребуется примерно 18 минут. К счастью, в большинстве случаев, время сборки меньше, чем у binutils.

В целом, величина SBU не совсем точна, поскольку она зависит от множества факторов, начиная от версии GCC хост-системы. Она приведены здесь, чтобы дать оценку того, сколько времени может потребоваться для сборки пакета, но в некоторых случаях цифры могут отличаться на десятки минут.

В современных материнских платах есть возможность управлять тактовой частотой процессора. Это можно сделать с помощью команды, такой как, powerprofilesctl. Данная возможность отсутствует в LFS, но может быть доступна в хост-дистрибутиве. После сборки LFS управление производительностью и электропитанием можно добавить в систему с помощью инструкций, описанных на странице BLFS power-profiles-daemon.

Перед измерением времени сборки любого пакета рекомендуется задействовать профиль энергопотребления системы, настроенный на максимальную производительность (и максимальное энергопотребление).

В противном случае измеренное значение SBU может быть неточным, поскольку система может по-разному реагировать на сборку binutils-pass1 или других пакетов.

Имейте в виду, что даже если для обоих пакетов используется один и тот же профиль, все равно могут возникнуть существенные неточности, поскольку система может реагировать медленнее, если система простаивает при запуске процедуры сборки. Установка для профиля питания режима «производительность» сведет к минимуму эту проблему. И, очевидно, это также ускорит сборку LFS.

Если powerprofilesctl доступен, введите команду powerprofilesctl set performance, чтобы выбрать профиль производительность. Некоторые дистрибутивы для управления профилями предоставляют команду tuned-adm вместо powerprofilesctl, в этих дистрибутивах введите команду tuned-adm profile throughput-performance, чтобы выбрать профиль производительность.

[Примечание]

Примечание

Когда используется несколько ядер, единицы измерения SBU будут различаться еще больше, чем обычно. В некоторых случаях make просто завершится ошибкой. Анализ выходных данных процесса сборки также будет более сложным, поскольку строки разных потоков будут чередоваться. Если вы столкнулись с проблемой на этапе сборки, вернитесь к сборке на одном ядре, чтобы проанализировать сообщения об ошибках.

Представленные здесь значения времени для всех пакетов (за исключением binutils-pass1, который собирается на одном ядре) рассчитаны при использовании четырех ядер (-j4). Время, указанное в главе 8, также включает время выполнения регрессионных тестов для пакета, если не указано иное.