mirror of
https://git.linuxfromscratch.org/lfs.git
synced 2025-06-18 19:29:21 +01:00
settingenviron: Set MAKEFLAGS for parallelism in ~lfs/.bashrc
This commit is contained in:
parent
e70bf8f4f4
commit
a0a803c0b0
@ -37,18 +37,6 @@
|
|||||||
numbers can vary by as much as dozens of minutes in some cases.</para>
|
numbers can vary by as much as dozens of minutes in some cases.</para>
|
||||||
|
|
||||||
<note>
|
<note>
|
||||||
<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 either setting an environment variable or telling the
|
|
||||||
<command>make</command> program how many processors are available. For
|
|
||||||
instance, an Intel i5-6500 CPU can support four simultaneous processes with:</para>
|
|
||||||
|
|
||||||
<screen role="nodump"><userinput>export MAKEFLAGS='-j4'</userinput></screen>
|
|
||||||
|
|
||||||
<para>or by building with:</para>
|
|
||||||
|
|
||||||
<screen role="nodump"><userinput>make -j4</userinput></screen>
|
|
||||||
|
|
||||||
<para>When multiple processors are used in this way, the SBU units in the
|
<para>When multiple processors are used in this way, the SBU units in the
|
||||||
book will vary even more than they normally would. In some cases, the make
|
book will vary even more than they normally would. In some cases, the make
|
||||||
step will simply fail. Analyzing the output of the build process will also
|
step will simply fail. Analyzing the output of the build process will also
|
||||||
|
@ -195,6 +195,55 @@ EOF</userinput></screen>
|
|||||||
completed LFS system.</para>
|
completed LFS system.</para>
|
||||||
</important>
|
</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
|
<para>Finally, to ensure the environment is fully prepared for building the
|
||||||
temporary tools, force the <command>bash</command> shell to read
|
temporary tools, force the <command>bash</command> shell to read
|
||||||
the new user profile:</para>
|
the new user profile:</para>
|
||||||
|
Loading…
Reference in New Issue
Block a user