summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bitbake/lib/bb/runqueue.py18
1 files changed, 10 insertions, 8 deletions
diff --git a/bitbake/lib/bb/runqueue.py b/bitbake/lib/bb/runqueue.py
index 17da1bc1a5..26c2d5177b 100644
--- a/bitbake/lib/bb/runqueue.py
+++ b/bitbake/lib/bb/runqueue.py
@@ -201,21 +201,23 @@ class RunQueueScheduler(object):
201 now = time.time() 201 now = time.time()
202 tdiff = now - self.prev_pressure_time 202 tdiff = now - self.prev_pressure_time
203 psi_accumulation_interval = 1.0 203 psi_accumulation_interval = 1.0
204 cpu_pressure = (float(curr_cpu_pressure) - float(self.prev_cpu_pressure)) / tdiff
205 io_pressure = (float(curr_io_pressure) - float(self.prev_io_pressure)) / tdiff
206 memory_pressure = (float(curr_memory_pressure) - float(self.prev_memory_pressure)) / tdiff
207 exceeds_cpu_pressure = self.rq.max_cpu_pressure and cpu_pressure > self.rq.max_cpu_pressure
208 exceeds_io_pressure = self.rq.max_io_pressure and io_pressure > self.rq.max_io_pressure
209 exceeds_memory_pressure = self.rq.max_memory_pressure and memory_pressure > self.rq.max_memory_pressure
210
204 if tdiff > psi_accumulation_interval: 211 if tdiff > psi_accumulation_interval:
205 exceeds_cpu_pressure = self.rq.max_cpu_pressure and (float(curr_cpu_pressure) - float(self.prev_cpu_pressure)) / tdiff > self.rq.max_cpu_pressure
206 exceeds_io_pressure = self.rq.max_io_pressure and (float(curr_io_pressure) - float(self.prev_io_pressure)) / tdiff > self.rq.max_io_pressure
207 exceeds_memory_pressure = self.rq.max_memory_pressure and (float(curr_memory_pressure) - float(self.prev_memory_pressure)) / tdiff > self.rq.max_memory_pressure
208 self.prev_cpu_pressure = curr_cpu_pressure 212 self.prev_cpu_pressure = curr_cpu_pressure
209 self.prev_io_pressure = curr_io_pressure 213 self.prev_io_pressure = curr_io_pressure
210 self.prev_memory_pressure = curr_memory_pressure 214 self.prev_memory_pressure = curr_memory_pressure
211 self.prev_pressure_time = now 215 self.prev_pressure_time = now
212 else: 216
213 exceeds_cpu_pressure = self.rq.max_cpu_pressure and (float(curr_cpu_pressure) - float(self.prev_cpu_pressure)) / tdiff > self.rq.max_cpu_pressure
214 exceeds_io_pressure = self.rq.max_io_pressure and (float(curr_io_pressure) - float(self.prev_io_pressure)) / tdiff > self.rq.max_io_pressure
215 exceeds_memory_pressure = self.rq.max_memory_pressure and (float(curr_memory_pressure) - float(self.prev_memory_pressure)) / tdiff > self.rq.max_memory_pressure
216 pressure_state = (exceeds_cpu_pressure, exceeds_io_pressure, exceeds_memory_pressure) 217 pressure_state = (exceeds_cpu_pressure, exceeds_io_pressure, exceeds_memory_pressure)
218 pressure_values = (round(cpu_pressure,1), self.rq.max_cpu_pressure, round(io_pressure,1), self.rq.max_io_pressure, round(memory_pressure,1), self.rq.max_memory_pressure)
217 if hasattr(self, "pressure_state") and pressure_state != self.pressure_state: 219 if hasattr(self, "pressure_state") and pressure_state != self.pressure_state:
218 bb.note("Pressure status changed to CPU: %s, IO: %s, Mem: %s" % pressure_state) 220 bb.note("Pressure status changed to CPU: %s, IO: %s, Mem: %s (CPU: %s/%s, IO: %s/%s, Mem: %s/%s)" % (pressure_state + pressure_values))
219 self.pressure_state = pressure_state 221 self.pressure_state = pressure_state
220 return (exceeds_cpu_pressure or exceeds_io_pressure or exceeds_memory_pressure) 222 return (exceeds_cpu_pressure or exceeds_io_pressure or exceeds_memory_pressure)
221 return False 223 return False