[bitbake-devel] [PATCH 1/3] runqueue: Optimise holdoff task handling
Richard Purdie
richard.purdie at linuxfoundation.org
Fri Aug 16 16:16:35 UTC 2019
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.
Signed-off-by: Richard Purdie <richard.purdie at linuxfoundation.org>
---
lib/bb/runqueue.py | 12 ++++++++++--
1 file changed, 10 insertions(+), 2 deletions(-)
diff --git a/lib/bb/runqueue.py b/lib/bb/runqueue.py
index 88212ca00c..0c17a23bdc 100644
--- a/lib/bb/runqueue.py
+++ b/lib/bb/runqueue.py
@@ -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):
"""
--
2.20.1
More information about the bitbake-devel
mailing list