diff options
author | Xi Ruoyao <xry111@xry111.site> | 2023-09-11 14:42:06 +0800 |
---|---|---|
committer | Xi Ruoyao <xry111@xry111.site> | 2023-11-13 21:09:47 +0800 |
commit | a0a803c0b053dd9b4867690d8bc25fc0b97fa486 (patch) | |
tree | afdb7852291ea50ff0c4a3ba6b34e3cbdc1ce457 /chapter04/settingenviron.xml | |
parent | e70bf8f4f487b56276db09390949cd865bfca43e (diff) |
settingenviron: Set MAKEFLAGS for parallelism in ~lfs/.bashrc
Diffstat (limited to 'chapter04/settingenviron.xml')
-rw-r--r-- | chapter04/settingenviron.xml | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/chapter04/settingenviron.xml b/chapter04/settingenviron.xml index b255a4b45..2d8d6045f 100644 --- a/chapter04/settingenviron.xml +++ b/chapter04/settingenviron.xml @@ -195,6 +195,55 @@ EOF</userinput></screen> completed LFS system.</para> </important> + <para> + For many modern systems with multiple processors (or cores) the + compilation time for a package can be reduced by performing a "parallel + make" by telling the make program how many processors are available via + a command line option or an environment variable. For instance, an Intel + Core i9-13900K processor has 8 P (performance) cores and + 16 E (efficiency) cores, and a P core can simultaneously run two threads + so each P core are modeled as two logical cores by the Linux kernel. + As the result there are 32 logical cores in total. One obvious way to + use all these logical cores is allowing <command>make</command> to spawn + up to 32 build jobs. This can be done by passing the + <parameter>-j32</parameter> option to <command>make</command>: + </para> + + <screen role='nodump'><userinput>make -j32</userinput></screen> + + <para> + Or set the <envar>MAKEFLAGS</envar> environment variable and its + content will be automatically used by <command>make</command> as + command line options: + </para> + + <screen role='nodump'><userinput>export MAKEFLAGS=-j32</userinput></screen> + + <important> + <para> + Never pass a <parameter>-j</parameter> option without a number to + <command>make</command> or set such an option in + <envar>MAKEFLAGS</envar>. Doing so will allow <command>make</command> + to spawn infinite build jobs and cause system stability issue. + </para> + </important> + + <para> + To use all logical cores available for building packages in + <xref linkend='chapter-cross-tools'/> and + <xref linkend='chapter-temporary-tools'/>, set <envar>MAKEFLAGS</envar> + now in <filename>.bashrc</filename>: + </para> + +<screen><userinput>cat >> ~/.bashrc << "EOF" +<literal>export MAKEFLAGS=-j<replaceable>$(nproc)</replaceable></literal> +EOF</userinput></screen> + + <para> + Replace <replaceable>$(nproc)</replaceable> with the number of logical + cores you want to use if you don't want to use all the logical cores. + </para> + <para>Finally, to ensure the environment is fully prepared for building the temporary tools, force the <command>bash</command> shell to read the new user profile:</para> |