diff options
-rw-r--r-- | bitbake/lib/bb/runqueue.py | 22 |
1 files changed, 13 insertions, 9 deletions
diff --git a/bitbake/lib/bb/runqueue.py b/bitbake/lib/bb/runqueue.py index 51a3b1c8cc2..c7b9914d2db 100644 --- a/bitbake/lib/bb/runqueue.py +++ b/bitbake/lib/bb/runqueue.py @@ -160,24 +160,28 @@ class RunQueueScheduler(object): self.rev_prio_map = None - def exceeds_max_pressure(self): try: - curr_pressure_sample = subprocess.check_output(["cat", "/proc/pressure/cpu", "/proc/pressure/io"], universal_newlines=True, stderr=subprocess.DEVNULL) + subprocess.check_output(["cat", "/proc/pressure/cpu", "/proc/pressure/io"], \ + universal_newlines=True, stderr=subprocess.DEVNULL) + self.readable_pressure_files = True except: - return False + if self.rq.max_cpu_pressure!=0 or self.rq.max_io_pressure!=0: + bb.warn("The /proc/pressure files can't be read. Continuing build without monitoring pressure") + self.readable_pressure_files = False - if curr_pressure_sample: + def exceeds_max_pressure(self): + if self.readable_pressure_files: # extract avg10 from /proc/pressure/{cpu|io} + curr_pressure_sample = subprocess.check_output(["cat", "/proc/pressure/cpu", "/proc/pressure/io"], \ + universal_newlines=True, stderr=subprocess.DEVNULL) curr_cpu_pressure = curr_pressure_sample.split('\n')[0].split()[1].split("=")[1] curr_io_pressure = curr_pressure_sample.split('\n')[2].split()[1].split("=")[1] - + retval = float(curr_cpu_pressure) > self.rq.max_cpu_pressure or float(curr_io_pressure) > self.rq.max_io_pressure return retval return False - - def next_buildable_task(self): """ Return the id of the first task we find that is buildable @@ -1718,8 +1722,8 @@ class RunQueueExecute: self.number_tasks = int(self.cfgData.getVar("BB_NUMBER_THREADS") or 1) self.scheduler = self.cfgData.getVar("BB_SCHEDULER") or "speed" - self.max_cpu_pressure = int(self.cfgData.getVar("BB_MAX_CPU_PRESSURE") or 100) - self.max_io_pressure = int(self.cfgData.getVar("BB_MAX_IO_PRESSURE") or 100) + self.max_cpu_pressure = int(self.cfgData.getVar("BB_MAX_CPU_SOME_PRESSURE") or 100) + self.max_io_pressure = int(self.cfgData.getVar("BB_MAX_IO_SOME_PRESSURE") or 100) self.sq_buildable = set() self.sq_running = set() |