Track CPU usage in CI (#1168)
* run openpilot for 60 seconds and report cpu
* Not passive
* Set training version
* Write cpuset
* Add community toggle
* Formatting
* Refactor
* Reorder processes
* Add max cpu
* Try this
* Try this to exit
* Does this work?
* This should work
* now it should work again
old-commit-hash: 3d2696c60b
commatwo_master
parent
5a125fc7d6
commit
1076fb3da2
4 changed files with 91 additions and 2 deletions
@ -0,0 +1,50 @@ |
|||||||
|
def cputime_total(ct): |
||||||
|
return ct.cpuUser + ct.cpuSystem + ct.cpuChildrenUser + ct.cpuChildrenSystem |
||||||
|
|
||||||
|
|
||||||
|
def print_cpu_usage(first_proc, last_proc): |
||||||
|
r = 0 |
||||||
|
procs = [ |
||||||
|
("selfdrive.controls.controlsd", 59.46), |
||||||
|
("./_modeld", 48.94), |
||||||
|
("./loggerd", 28.49), |
||||||
|
("selfdrive.controls.plannerd", 19.77), |
||||||
|
("selfdrive.controls.radard", 9.54), |
||||||
|
("./_ui", 9.54), |
||||||
|
("./camerad", 7.07), |
||||||
|
("selfdrive.locationd.locationd", 7.13), |
||||||
|
("./_sensord", 6.17), |
||||||
|
("selfdrive.controls.dmonitoringd", 5.48), |
||||||
|
("./boardd", 3.63), |
||||||
|
("./_dmonitoringmodeld", 2.67), |
||||||
|
("selfdrive.logmessaged", 2.71), |
||||||
|
("selfdrive.thermald", 2.41), |
||||||
|
("./paramsd", 2.18), |
||||||
|
("selfdrive.locationd.calibrationd", 1.76), |
||||||
|
("./proclogd", 1.54), |
||||||
|
("./_gpsd", 0.09), |
||||||
|
("./clocksd", 0.02), |
||||||
|
("./ubloxd", 0.02), |
||||||
|
("selfdrive.tombstoned", 0), |
||||||
|
("./logcatd", 0), |
||||||
|
("selfdrive.updated", 0), |
||||||
|
] |
||||||
|
|
||||||
|
dt = (last_proc.logMonoTime - first_proc.logMonoTime) / 1e9 |
||||||
|
print("------------------------------------------------") |
||||||
|
for proc_name, normal_cpu_usage in procs: |
||||||
|
try: |
||||||
|
first = [p for p in first_proc.procLog.procs if proc_name in p.cmdline][0] |
||||||
|
last = [p for p in last_proc.procLog.procs if proc_name in p.cmdline][0] |
||||||
|
cpu_time = cputime_total(last) - cputime_total(first) |
||||||
|
cpu_usage = cpu_time / dt * 100. |
||||||
|
if cpu_usage > max(normal_cpu_usage * 1.1, normal_cpu_usage + 5.0): |
||||||
|
print(f"Warning {proc_name} using more CPU than normal") |
||||||
|
r = 1 |
||||||
|
|
||||||
|
print(f"{proc_name.ljust(35)} {cpu_usage:.2f}%") |
||||||
|
except IndexError: |
||||||
|
print(f"{proc_name.ljust(35)} NO METRICS FOUND") |
||||||
|
print("------------------------------------------------") |
||||||
|
|
||||||
|
return r |
Loading…
Reference in new issue