bitbake: runqueue: Optimise holdoff task handling

We don't need to process the holdoff task list until we're executing tasks
which saves some data manipulation, at the cost of some data structures
not being correct at all times. This saves significant amounts of time
in various profile charts of larger builds.

(Bitbake rev: 270f076111b12eab358417b0c4cf9c70d7cc787a)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Richard Purdie
2019-08-16 13:11:04 +01:00
parent 3afc48c38f
commit fece8f4737

View File

@@ -1711,6 +1711,7 @@ class RunQueueExecute:
self.stampcache = {}
self.holdoff_tasks = set()
self.holdoff_need_update = True
self.sqdone = False
self.stats = RunQueueStats(len(self.rqdata.runtaskentries))
@@ -2057,6 +2058,8 @@ class RunQueueExecute:
self.rq.state = runQueueComplete
return True
self.update_holdofftasks()
if self.cooker.configuration.setsceneonly:
task = None
else:
@@ -2194,6 +2197,9 @@ class RunQueueExecute:
return taskdepdata
def update_holdofftasks(self):
if not self.holdoff_need_update:
return
self.holdoff_tasks = set()
for tid in self.rqdata.runq_setscene_tids:
@@ -2205,6 +2211,8 @@ class RunQueueExecute:
if dep not in self.runq_complete:
self.holdoff_tasks.add(dep)
self.holdoff_need_update = False
def process_possible_migrations(self):
changed = set()
@@ -2324,7 +2332,7 @@ class RunQueueExecute:
self.sqdone = False
if changed:
self.update_holdofftasks()
self.holdoff_need_update = True
def scenequeue_updatecounters(self, task, fail=False):
@@ -2373,7 +2381,7 @@ class RunQueueExecute:
self.tasks_covered = covered
self.tasks_notcovered = notcovered
self.update_holdofftasks()
self.holdoff_need_update = True
def sq_task_completeoutright(self, task):
"""