freebsd / poudriere

Port/Package build and test system
https://github.com/freebsd/poudriere/wiki
BSD 2-Clause "Simplified" License
389 stars 161 forks source link

Reduce disk-io #36

Open bapt opened 10 years ago

bapt commented 10 years ago

I would like to propose a change in building strategy for poudriere, which would considerably lessen the disk-io burden ( which with 8 builders gets pretty severe ).

Let there be some packages a b c d e f g, where e depends on d and d on a, and g depends on all. Now: B : 1 2 3 4
01: a d e g 02: b
03: c 04: f

( One possibility, I guess ) Where for every builder and every pkg there is install all deps from scratch, build, rollback. But in the above example, why not just take a snapshot in-between the builds in builder 01 and do the diff on the snapshots?

Early on current solution is good, but when things like DEs gets build, every subpackage installs xorg+toolkits(gtk/qt)+perl and so on. When there is so clear chains, a complete reset is very costly IMHO.

I would also suggest that as the build progresses and deps becomes more pronounced and packages to build larger, BUILD_JOBS_DISABLE should not be used.

The build machine I use now ( core-i7 2600 ) has an average load like 2 for a whole build including libreoffice, chromium, firefox and kde ( and thats with BUILD_JOBS_DISABLE unset ), but the machine is almost non-responsive due to disk-io.


andrnils added on 2012-09-25 07:30:30 UTC:
Further data-points: I notice on average between 200 and 300 tps and ~10mb/s disk-io in systat :iostat

Doing diffs on snapshots in a chain build would also allow you do the package-building in the background, I think.


bdrewery added on 2012-09-25 16:12:16 UTC:
What is BUILD_JOBS_DISABLE ?


andrnils added on 2012-09-25 18:54:00 UTC:
It is my bad memory ;) DISABLE_MAKE_JOBS was the one. Sorry


bdrewery added on 2013-03-11 12:00:35 UTC:
Related to [008a6a6eb2]

grahamperrin commented 3 years ago

Drive-by comment:

root@mowa219-gjp4-8570p:~ # grep USE_TMPFS /usr/local/etc/poudriere.conf | grep -v \#
USE_TMPFS=all
root@mowa219-gjp4-8570p:~ #