https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=285253

--- Comment #17 from Martin Birgmeier <d8zne...@aon.at> ---
I have now tried poudriere, here are some observations. They are surely limited
by my short trials and resulting experience (I spent about 8 hours on the setup
for building my list of ports).

My build machines are VMs running under Linux/KVM because this server is not
yet well supported by FreeBSD. They run stable/14 with a few minor local
patches and are updated mostly when security fixes are announced. I ran
release/release.sh to build the necessary tarballs for poudriere.

The storage is on a separate server and uses ZFS extensively, with a setup
geared towards efficient replication (for backup purposes). It is made
available to the build machines using iSCSI (for the VM base disks) and NFS
(for all other stuff, e.g., /usr/src, /usr/obj, /usr/ports, a download mirror,
etc.).

As far as I could find out, this setup does not fit well with what poudriere
requires, which is basically a single machine with lots of cores and lots of
ZFS disk space. However, this impression may be wrong due to me not knowing
poudriere well enough.

I circumvented this by giving my VMs an additional, RAM-based disk (Linux brd),
on which I created the zpool for poudriere. This disk had 48 GB space.

This worked quite well until it got to building node22 and rust. All other
dependencies already having been built, this was now using 2 CPUs out of 16
available on the VM, one for each of these ports, and therefore taking very
long.

I killed the build and set ALLOW_MAKE_JOBS_PACKAGES="firefox llvm* node* rust
thunderbird" in poudriere.conf. This now had the opposite effect, causing the
VMs to start swapping. I think it would be good to have another option in
poudriere to force a single build jail for certain ports, and this I would then
set to exactly the same list, so that such ports are built using their full
inherent parallel build options while not interfering with other concurrently
running port builds.

Ultimately and unsurprisingly, my 48 GB RAM disk ran full, at which point I
stopped the experiment.

One minor issue: It would be nice for 'poudriere config' to have an option to
take the defaults from /var/db/ports. This would make it easier for me to use
exactly the same options I am using with portmaster.

I circumvented this by first finding out where poudriere stores the port
configurations, then removing that, replacing it by a copy of /var/db/ports,
and just to be on the safe side running 'poudriere config' again.

I would appreciate getting some hints on how I could use poudriere in an
optimal fashion with a split CPU/storage setup like mine. I assume this would
also be useful when using docker images with the big three CSPs.

My impression is that poudriere is an amazing piece of software which could
benefit of being updated to be more cloud-compatible.

Corrections and ideas are welcome.

-- Martin

-- 
You are receiving this mail because:
You are the assignee for the bug.

Reply via email to