1
0
mirror of https://git.yoctoproject.org/poky synced 2026-06-01 00:59:48 +00:00

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