scons,fastmodel: Limit how many instances of simgen can run at once.
authorGabe Black <gabeblack@google.com>
Tue, 4 Aug 2020 07:33:55 +0000 (00:33 -0700)
committerGabe Black <gabeblack@google.com>
Wed, 5 Aug 2020 23:53:27 +0000 (23:53 +0000)
commit7a94f5cbf747c7f72914afeb72d9f8e8721a9465
tree6feebd9e1a175cd08bbd7b48325f8469bc33f0f2
parentbb64849425c3e6c720ed1850f93496a123491403
scons,fastmodel: Limit how many instances of simgen can run at once.

Each instance of simgen uses a license. If there are only so many to
go around, running many instances at once could exhaust the pool of
licenses and break the build.

The number of licenses may be less than the number of regular build
steps we want to do in parallel, but may be greater than zero. To
limit them to at most n in parallel where n might be less than j
and/or more than 1, we create a group of license slots, assign simgen
invocations to a slot, and then use scons's side effect mechanism to
ensure no two invocations in the same slot run at the same time.

This may be a suboptimal packing if the commands take significantly
different amounts of time to run since the slots are preallocated and
not demand allocated, but the difference shouldn't normally matter in
practice, and scons doesn't provide a better mechanism for partially
serializing certain build steps.

Change-Id: Ifae58b48ae1b989c1915444bf7564f352f042305
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/32124
Reviewed-by: Bobby R. Bruce <bbruce@ucdavis.edu>
Maintainer: Gabe Black <gabeblack@google.com>
Tested-by: kokoro <noreply+kokoro@google.com>
src/arch/arm/fastmodel/SConscript
src/arch/arm/fastmodel/SConsopts