diff options
author | Martin Jansa <Martin.Jansa@gmail.com> | 2023-08-15 12:00:42 +0200 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2023-08-24 16:49:38 +0100 |
commit | 8087c261b06efbdc581a5eae85d52b5d004b4a01 (patch) | |
tree | baf814030e1b8207079b3583dc03fdd911e15479 /bitbake/lib/bb/runqueue.py | |
parent | c9400d01575c2a93762b71bf790d0edd6e2acb6f (diff) | |
download | poky-8087c261b06efbdc581a5eae85d52b5d004b4a01.tar.gz |
bitbake: runqueue: show more pressure data
* with latest bitbake I'm seeing very low number of bitbake tasks
executed in parallel, probably due to pressure regulation
show the values this is based on in the note
* also simplify a bit by counting the pressure and exceeds signs
only once
(Bitbake rev: 21c17968f801e406ef7f328656587fadd9ef7f5d)
Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake/lib/bb/runqueue.py')
-rw-r--r-- | bitbake/lib/bb/runqueue.py | 18 |
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 |