Re: git: c8c2d4f22536 - main - lang/python3: allow using LTO on powerpc64

From: Matthias Andree <matthias.andree_at_tu-dortmund.de>
Date: Sun, 26 Feb 2023 13:10:58 UTC
Am 26.02.23 um 13:26 schrieb Alexey Dokuchaev:
> On Sun, Feb 26, 2023 at 01:00:19PM +0100, Matthias Andree wrote:
>> Am 24.02.23 um 16:48 schrieb Piotr Kubaj:
>>> commit c8c2d4f2253694802ef720f098c57800570ad2fc
>>>
>>>    lang/python3: allow using LTO on powerpc64
>>>
>>>    It was recently fixed and will be available in 13.2-RELEASE.
>>>    Since LTO is not enabled by default, it's ok to make it available.
>>
>> Careful. LTO causes EXCESSIVE memory use for the build.
>> I've had to disable it for a low-memory server I operate (amd64 based,
>> but that's the LTO feature itself, not the CPU).
> 
> I think most people just disable LTO because they don't have 256GB+ or
> whatever amount of RAM it demands for arguably rather little gain.
> 
> Putting OPTIONS_UNSET+=LTO in your /etc/make.conf makes the ports tree
> much more usable.

It depends how well software is written, and LTO can make a considerable 
difference.  But it is extremely expensive currently, so it's probably 
easier to enable only on certain ports that really benefit at run-time.

We would require something like a resource scheduler for poudriere or 
the ports build system, which tracks how much RAM and disk space we need 
on a certain port, architecture, possibly FreeBSD version, and with 
certain specific options.

My builder has 16 GB RAM (virtually, it's normally in a virtual machine, 
but can boot natively) and building compilers in parallel usually fails. 
I have limited JOBS to like 6 or so.

If the builds framework could track how much memory and disk space a 
certain build needed, and possibly the expected build time, it could 
make better decisions, for instance, if it dispatched a rust or llvm 
build, it would hold off on other compiler builds and instead build 
several dozen Perl or Python ports in parallel to rust.