Re: visualize build parallelism, duration of build steps?

Gary Oberbrunner <[email protected]>
Newsgroups gmane.comp.programming.tools.scons.user
Message-ID <CAFChFyhPphmMuE0OMp-zrXCmVUTAe8bgFO_tK8spwz2fsga7WQ@mail.gmail.com>
Some of this is likely to be your builds becoming I/O bound, I'd expect?

On Tue, Oct 19, 2021 at 9:04 PM Gabe Black <[email protected]> wrote:

> That sounds interesting. I see that when I set -j to 24, the actual CPU
> percentage it gets is only 1953%, which I think would correlate with
> underused CPUs. I had other things running on this computer in the mean
> time like my web browser, but not enough to use 14 of 24 threads in the
> -j12 case, for instance.
>
> jobs  CPU percentage
> 4     397.00%
> 8     755.00%
> 12    1086.00%
> 16    1403.00%
> 20    1713.00%
> 24    1953.00%
>
> On Tue, Oct 19, 2021 at 5:21 PM Bill Deegan <[email protected]>
> wrote:
>
>> From some experiments MongoDB ran, you can saturate the scheduler without
>> maxing out available CPU's with the current taskmaster.
>> They produced a PR with some patches to improve the job finding and
>> dispatch logic.
>>
>> If you're hitting a wall where you CPU cores are idle, that PR's patch
>> might be interesting.
>> Though it could be that SCons schedules lots of object compiles -> fewer
>> ar/shared library linking -> fewer programs could also be leading to under
>> utilized cores later in your build and/or as part of an incremental build.
>>
>> Hope that helps,
>> Bill
>> SCons Project Co-Manager
>>
>> On Tue, Oct 19, 2021 at 3:55 PM Gabe Black <[email protected]> wrote:
>>
>>> There definitely seems to be a build size component to this. I have a
>>> series of changes which don't change how anything is built, but tell SCons
>>> about everything and then select what to build with different dependencies
>>> instead of using python logic to selectively set up build rules. With -j
>>> set to its previous saturation point performance wise, this actually
>>> increased build time by about 7-8%. I deleted the build and reran to make
>>> sure there weren't caching effects impacting the results, and they stayed
>>> consistent.
>>>
>>> Gabe
>>>
>>> On Tue, Oct 19, 2021 at 6:59 AM Mats Wichmann <[email protected]> wrote:
>>>
>>>> On 10/18/21 16:45, Gabe Black wrote:
>>>> > Hi folks, sorry if this is a really obvious question, but is there a
>>>> > command line flag or tool or something to visualize how parallel a
>>>> SCons
>>>> > build is, if there are any bottlenecks, if there are abnormally long
>>>> > running build steps, etc?
>>>>
>>>> The taskmastertrace is generally the way to extract this information.
>>>> It's a bit like trying to drink from a firehose, though, so a tool to
>>>> process it would likely help. Don't know if there are any of those
>>>> floating around.
>>>>
>>>>
>>>> > I've had a suspicion for a few years that there might be a task
>>>> scheduling bug where at certain points a super task seems to come along and
>>>> stop any other tasks from being scheduled until it is done.
>>>> There's been some discussion of this over time.  It appears the way
>>>> scheduling is done may be prone to getting blocked by a long-running
>>>> jobs.  One tuning of the algorithm was proposed in a PR which hasn't
>>>> received much action - opinions about whether this had really
>>>> pinpointed
>>>> an underlying issue were not unanimous.
>>>>
>>>> https://github.com/SCons/scons/pull/3386
>>>>
>>>> There's also been talk about maybe not having all the members of the
>>>> pool of job threads be handled identically, so there's a place you
>>>> could
>>>> put a long-running job to get it started as soon as possible, and not
>>>> wait behind a bunch of shorter ones, which could then compete for the
>>>> other threads and maybe get closer to finishing at the same times.
>>>> Making decisions based on length of jobs would require some sort of
>>>> profiling capability so the scheduler has the information available.
>>>>
>>>> On the whole I think it's been posited that there are performance
>>>> issues
>>>> when the build gets very big, and not sure it's well understood why.
>>>> The taskmaster is a pretty complex piece of code and it was heavily
>>>> tuned "in the old days" (~15 years ago).  Be nice to have better ways
>>>> to
>>>> characterize what happens on modern hardware configurations with
>>>> potentially larger build projects than when that work was done.
>>>>
>>>> _______________________________________________
>>> Scons-users mailing list
>>> [email protected]
>>> https://pairlist4.pair.net/mailman/listinfo/scons-users
>>>
>> _______________________________________________
>> Scons-users mailing list
>> [email protected]
>> https://pairlist4.pair.net/mailman/listinfo/scons-users
>>
> _______________________________________________
> Scons-users mailing list
> [email protected]
> https://pairlist4.pair.net/mailman/listinfo/scons-users
>


-- 
Gary

_______________________________________________
Scons-users mailing list
[email protected]
https://pairlist4.pair.net/mailman/listinfo/scons-users
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.