4.5. 关于 SBU

许多人想在编译和安装各个软件包之前,了解这一过程大概需要多少时间。由于 Linux From Scratch 可以在许多不同系统上构建,我们无法直接给出估计时间。例如,最大的软件包 (gcc) 在最快的系统上只要大约 5 分钟就能构建好,而在一些较慢的系统上需要若干天!因此,我们不提供实际时间,而是以标准构建单位 (SBU) 衡量时间。

下面给出标准构建单位的测量方法。本书中构建的第一个软件包是第 5 章中的 Binutils,定义使用单个 CPU 核心编译它需要的时间为标准构建单位,缩写为 SBU。其他软件包的编译时间用 SBU 为单位表示。

例如,考虑一个编译时间是 4.5 SBU 的软件包。如果在您的系统上,需要 4 分钟来编译和安装第一轮的 Binutils,那么大概需要 18 分钟才能构建这个软件包。幸运的是,多数软件包的构建时间少于 1 SBU。

SBU 不是完全准确的,这是由于它受到许多因素的影响,包括宿主系统的 GCC 版本。SBU 只能用来估计安装一个软件包可能需要的时间,估计结果的误差在个别情况下可能达到几十分钟。

在一些较新的系统中,主板能够控制系统时钟频率,可以使用 powerprofilesctl 或类似命令调整主板控制系统时钟的策略。LFS 不包含这类命令,但宿主系统可能提供它。在 LFS 构建完成后,可以按照 BLFS power-profiles-daemon 页面的说明,为系统加入这一功能。在测量软件包的构建时间前,最好将系统电源策略设为最大性能模式 (这也会允许系统功率达到上限)。否则测量的 SBU 值可能不准确,这是因为系统在构建第一遍的 Binutils和其他软件包时的反应速度可能不同。注意即使在构建它们时使用了相同的电源策略,SBU 值仍然可能明显偏离正常值,因为一些电源策略会在系统空闲时降低其反应速度。将电源策略设为性能模式可以尽量减轻这一问题。当然,这样做还会使得构建 LFS 更快。

如果宿主系统提供 powerprofilesctl 命令,执行 powerprofilesctl set performance 命令以选择 performance (性能) 策略。一些宿主发行版使用 tuned-adm 命令代替 powerprofilesctl 命令管理电源策略,在这些发行版中,执行 tuned-adm profile throughput-performance 命令以选择 throughput-performance (优化吞吐量) 策略。

[注意]

注意

如上使用多个处理器时,使用 SBU 估计构建时间会出现更大的误差。某些情况下,还会导致 make 命令失败。另外,分析构建过程的的输出也会变得困难,因为不同进程的输出行会交错在一起。如果在构建过程中出现问题,需要使用单处理器进行构建,才能更好地分析错误消息。

我们在计算 SBU 值时,除了对于第一遍的 Binutils本身使用单个 CPU 核心外,都使用四个 CPU 核心 (-j4) 计时。第 8 章中的时间还会包含运行软件包退化测试的时间,除非另有说明。