Skip to content

Commit a58d561

Browse files
rpurdieleimaohui
authored andcommitted
bitbake: runqueue: Fix scenetask processing performance issue
Analysis shows that "bitbake core-image-ptest-all" spends a lot of time in scenequeue_updatecounters and much of it is rebuilding a set which doens't change. Reorder the code to avoid that performance glitch. (Bitbake rev: 923c19b9713e398d8e66e6d4422dfd4c18a03486) Signed-off-by: Richard Purdie <[email protected]>
1 parent 8e80df6 commit a58d561

File tree

1 file changed

+5
-1
lines changed

1 file changed

+5
-1
lines changed

bitbake/lib/bb/runqueue.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2771,8 +2771,12 @@ def scenequeue_updatecounters(self, task, fail=False):
27712771
logger.debug2("%s was unavailable and is a hard dependency of %s so skipping" % (task, dep))
27722772
self.sq_task_failoutright(dep)
27732773
continue
2774+
2775+
# For performance, only compute allcovered once if needed
2776+
if self.sqdata.sq_deps[task]:
2777+
allcovered = self.scenequeue_covered | self.scenequeue_notcovered
27742778
for dep in sorted(self.sqdata.sq_deps[task]):
2775-
if self.sqdata.sq_revdeps[dep].issubset(self.scenequeue_covered | self.scenequeue_notcovered):
2779+
if self.sqdata.sq_revdeps[dep].issubset(allcovered):
27762780
if dep not in self.sq_buildable:
27772781
self.sq_buildable.add(dep)
27782782

0 commit comments

Comments
 (0)