Page MenuHomeSolus

Rebuild graph-tool against libboost
Needs ReviewPublic

Authored by Girtablulu on Sun, Mar 22, 9:01 AM.

Details

Reviewers
None
Group Reviewers
Triage Team
Summary

Rebuild graph-tool against libboost
Depends on D8527

Test Plan

Rebuild it against libboost

Diff Detail

Repository
R4213 graph-tool
Branch
master
Lint
No Linters Available
Unit
No Unit Test Coverage

Event Timeline

Girtablulu created this revision.Sun, Mar 22, 9:01 AM
Girtablulu requested review of this revision.Sun, Mar 22, 9:01 AM
Girtablulu updated this revision to Diff 20393.EditedSun, Mar 22, 12:10 PM

on ermos advice I used the LLVM_PARALLEL_LINK_JOBS=1 with -j4, which cut down the build time on my system from ~190m to ~68m and a max usage of RAM ~18GB while still using my system

adding @DataDrake for the okay to use it in the way

ermo added a subscriber: ermo.Sun, Mar 22, 12:22 PM
ermo added inline comments.
package.yml
29

I would change the comment to something like

# Linking jobs routinely use 10+ GiB of RAM, so limit them to 1 at a time

33–34

Perhaps change to

# Maximum observed resident size of 1 compile job is around 6GiB -- most jobs are in the 2-4GB range, so -j4 should be fine

better comments description

ermo added inline comments.Sun, Mar 22, 12:58 PM
package.yml
34–39

Scratch that, my maximum observed resident size of 1 compile job is just under 8GiB with a compile time for said job of 15+ minutes (!)

Have seen a max of 2GiB + 6 Gib + 7.5 GiB compile jobs on my latest -j3 run, which pushed me into swap on my 16GiB physical RAM box w/ff + konsole + services.

ermo added a comment.EditedSun, Mar 22, 1:13 PM

My results with LLVM_PARALLEL_LINK_JOBS=1 on an FX-8350 w/16 GiB RAM + 4GiB swap:

-j2:

real    206m23.818s
user    383m30.154s                                                                                                                                 
sys     6m24.131s

-j3: (max RAM usage by compile jobs was 2GiB + 6-ish GiB + 7.5-ish GiB)

real    162m49.967s
user    412m23.566s
sys     6m40.476s

So decent scaling with -j2 (~86%) and -j3 (~85%). I wouldn't go higher than -j3 on a 16 GiB system if I was planning on working at the same time. Crazy to think that -j1 on Girt's box is quicker than -j2 on mine. =)

-j4 is probably more than fine with LLVM_PARALLEL_LINK_JOBS=1 on 32GiB systems (worked fine on Girt's 64 GiB box).

The highest link job memory usage I saw was 11.5-ish GiB, but since that's just one at a time now due to make's depth-first approach, that's a non-issue.

ermo added a comment.EditedSun, Mar 22, 3:19 PM

With what we now know, I suppose this knowledge could be captured in the following comment in the build section:

# Maximum observed single compile job size is around 8 GiB Resident with sizes in the range 1.5-5 GiB the most common.
# Likely due to poor job parallelism in make, the build will fan out to $CPUs -> 4-6 CPUs -> 1-2 CPUs.
# For systems with 16 GiB RAM, make -j3 is barely suitable and make -j2 is recommended if the system will be in use during the build.
# For systems with 32 GiB RAM, make -j8 is probably the maximum.
# For systems with 64 GiB RAM, make -j24 is probably the maximum, but won't be appreciably faster than make -j8
make %JOBS%
Girtablulu updated this revision to Diff 20395.Sun, Mar 22, 5:56 PM
Girtablulu marked 2 inline comments as done.

Give a better explenation and set -j24 as max for the Buildserver

Girtablulu updated this revision to Diff 20396.EditedSun, Mar 22, 7:49 PM

Build server uses 24 threads already no need to limit it