parent
0362cfa7ee
commit
bf2e00a233
|
@ -27,8 +27,15 @@ from openpilot.selfdrive.test.helpers import set_params_enabled, release_only
|
|||
from openpilot.system.hardware.hw import Paths
|
||||
from openpilot.tools.lib.logreader import LogReader
|
||||
|
||||
# Baseline CPU usage by process
|
||||
"""
|
||||
CPU usage budget
|
||||
* each process is entitled to at least 8%
|
||||
* total CPU usage of openpilot (sum(PROCS.values())
|
||||
should not exceed MAX_TOTAL_CPU
|
||||
"""
|
||||
MAX_TOTAL_CPU = 250. # total for all 8 cores
|
||||
PROCS = {
|
||||
# Baseline CPU usage by process
|
||||
"selfdrive.controls.controlsd": 46.0,
|
||||
"./loggerd": 14.0,
|
||||
"./encoderd": 17.0,
|
||||
|
@ -274,6 +281,7 @@ class TestOnroad(unittest.TestCase):
|
|||
result += f"{proc_name.ljust(35)} {cpu_usage:5.2f}% ({exp}%) {err}\n"
|
||||
if len(err) > 0:
|
||||
cpu_ok = False
|
||||
result += "------------------------------------------------\n"
|
||||
|
||||
# Ensure there's no missing procs
|
||||
all_procs = {p.name for p in self.service_msgs['managerState'][0].managerState.processes if p.shouldBeRunning}
|
||||
|
@ -281,7 +289,14 @@ class TestOnroad(unittest.TestCase):
|
|||
with self.subTest(proc=p):
|
||||
assert any(p in pp for pp in PROCS.keys()), f"Expected CPU usage missing for {p}"
|
||||
|
||||
result += "------------------------------------------------\n"
|
||||
# total CPU check
|
||||
procs_tot = sum([(max(x) if isinstance(x, tuple) else x) for x in PROCS.values()])
|
||||
with self.subTest(name="total CPU"):
|
||||
assert procs_tot < MAX_TOTAL_CPU, "Total CPU budget exceeded"
|
||||
result += "------------------------------------------------\n"
|
||||
result += f"Total allocated CPU usage is {procs_tot}%, budget is {MAX_TOTAL_CPU}%, {MAX_TOTAL_CPU-procs_tot:.1f}% left\n"
|
||||
result += "------------------------------------------------\n"
|
||||
|
||||
print(result)
|
||||
|
||||
self.assertTrue(cpu_ok)
|
||||
|
|
Loading…
Reference in New Issue