4.5. SBU 値について

各パッケージをコンパイルしインストールするのにどれほどの時間を要するか、誰しも知りたくなるところです。 しかし Linux From Scratch は数多くのシステム上にて構築可能であるため、正確な処理時間を見積ることは困難です。 最も大きなパッケージ (gcc) の場合、処理性能の高いシステムでも 5 分はかかります。 それが性能の低いシステムとなると数日はかかるかもしれません! 本書では処理時間を正確に示すのでなく、標準ビルド単位 (Standard Build Unit; SBU) を用いることにします。

SBU の測定は以下のようにします。 最初にコンパイルするのは 第 5 章における binutils です。 このパッケージを 1 コアのシステムによってコンパイルするのに要する時間を標準ビルド時間とし、他のコンパイル時間はその時間を基準にして表現します。

例えばあるパッケージのコンパイル時間が 4.5 SBU であったとします。 そして binutils の 1 回目のコンパイルが 4 分であったとすると、そのパッケージは およそ 18 分かかることを意味しています。 幸いにも、たいていのパッケージは 1 SBU よりもコンパイル時間は短いものです。

コンパイル時間というものは、例えばホストシステムの GCC のバージョンの違いなど、多くの要因に左右されるため SBU 値は正確なものになりません。 SBU 値は、インストールに要する時間の目安を示すものに過ぎず、場合によっては十数分の誤差が出ることもあります。

最新のシステムの場合、マザーボードにシステムクロック速度の制御機能があります。 これは powerprofilesctl などのコマンドを使って制御します。 LFS では利用できないものですが、ホストディストロでは利用できるものかもしれません。 LFS の構築を終えた後に BLFS power-profiles-daemon に示される手順に従えば、システムにその機能を追加することができます。 どのパッケージのビルド時間を調べる際であっても、システムの電源プロファイルセットは最大のパフォーマンス (最大消費電力) を発揮するように設定することが推奨されます。 これを行っていないと SBU の測定値は極端に不適切なものとなります。 binutils 1回め や他パッケージのビルドの際には、システムがさまざまな処理反応を示すためです。 測定するパッケージに対して同一プロファイルを用いていたとしても、極端に測定値が不適切となる場合もあることに留意しておいてください。 これはビルド処理開始の際にシステムがアイドル状態となっていると、システムの反応がより遅くなるためです。 電源プロファイルをperformanceに設定しておけば、この問題は解消します。 さらに LFS ビルドは明らかに早くなるはずです。

power-profiles-daemon が利用可能である場合は powerprofilesctl set performance コマンドを実行して performance プロファイルを選択します。 ディストロの中にはプロファイルの管理に powerprofilesctl ではなく tuned-adm コマンドを利用しているものがあります。 その場合は tuned-adm profile throughput-performance コマンドを実行して throughput-performance プロファイルを選択します。

[注記]

注記

上のようにして複数プロセッサーが利用されると、本書に示している SBU 単位は、通常の場合に比べて大きく変化します。 そればかりか場合により make 処理に失敗することもあります。 したがってビルド結果を検証するにしても話が複雑になります。 複数のプロセスラインがインターリーブにより多重化されるためです。 ビルド時に何らかの問題が発生したら、単一プロセッサー処理を行ってエラーメッセージを分析してください。

ここに示す時間は (1 コアで処理を行う binutils 1回め を除き) 4 コア(-j4)を使用した場合に基づいています。 また第 8 章では、特に断りがない限り、パッケージの縮退テストの実行時間も含めています。