From 3fef70f0d531a4de406491c2c3f0ee172db42a38 Mon Sep 17 00:00:00 2001 From: Willem Melching Date: Thu, 13 Feb 2020 15:07:03 -0800 Subject: [PATCH] add mem flag to live cpu and temp script --- selfdrive/debug/live_cpu_and_temp.py | 90 +++++++++++++++------------- 1 file changed, 49 insertions(+), 41 deletions(-) diff --git a/selfdrive/debug/live_cpu_and_temp.py b/selfdrive/debug/live_cpu_and_temp.py index 1f4f2426e2736b..4f324711daef2f 100755 --- a/selfdrive/debug/live_cpu_and_temp.py +++ b/selfdrive/debug/live_cpu_and_temp.py @@ -1,64 +1,72 @@ #!/usr/bin/env python3 +import argparse + import numpy as np from cereal.messaging import SubMaster + def cputime_total(ct): - return ct.user + ct.nice + ct.system + ct.idle + ct.iowait + ct.irq + ct.softirq + return ct.user + ct.nice + ct.system + ct.idle + ct.iowait + ct.irq + ct.softirq def cputime_busy(ct): - return ct.user + ct.nice + ct.system + ct.irq + ct.softirq + return ct.user + ct.nice + ct.system + ct.irq + ct.softirq +if __name__ == "__main__": + parser = argparse.ArgumentParser() + parser.add_argument('--mem', action='store_true') + args = parser.parse_args() -sm = SubMaster(['thermal', 'procLog']) + sm = SubMaster(['thermal', 'procLog']) -last_temp = 0.0 -last_mem = 0.0 -total_times = [0., 0., 0., 0.] -busy_times = [0., 0., 0.0, 0.] + last_temp = 0.0 + last_mem = 0.0 + total_times = [0., 0., 0., 0.] + busy_times = [0., 0., 0.0, 0.] + while True: + sm.update() -while True: - sm.update() + if sm.updated['thermal']: + t = sm['thermal'] + last_temp = np.mean([t.cpu0, t.cpu1, t.cpu2, t.cpu3]) / 10. + last_mem = t.memUsedPercent - if sm.updated['thermal']: - t = sm['thermal'] - last_temp = np.mean([t.cpu0, t.cpu1, t.cpu2, t.cpu3]) / 10. - last_mem = t.memUsedPercent + if sm.updated['procLog']: + m = sm['procLog'] - if sm.updated['procLog']: - m = sm['procLog'] - mems = {} - for proc in m.procs: - name = proc.name - if len(proc.cmdline): - name = proc.cmdline[0] - if len(proc.exe): - name = proc.exe + " - " + name - mems[name] = float(proc.memRss) / 1e6 + cores = [0., 0., 0., 0.] + total_times_new = [0., 0., 0., 0.] + busy_times_new = [0., 0., 0.0, 0.] - cores = [0., 0., 0., 0.] - total_times_new = [0., 0., 0., 0.] - busy_times_new = [0., 0., 0.0, 0.] + for c in m.cpuTimes: + n = c.cpuNum + total_times_new[n] = cputime_total(c) + busy_times_new[n] = cputime_busy(c) - for c in m.cpuTimes: - n = c.cpuNum - total_times_new[n] = cputime_total(c) - busy_times_new[n] = cputime_busy(c) + for n in range(4): + t_busy = busy_times_new[n] - busy_times[n] + t_total = total_times_new[n] - total_times[n] + cores[n] = t_busy / t_total - for n in range(4): - t_busy = busy_times_new[n] - busy_times[n] - t_total = total_times_new[n] - total_times[n] - cores[n] = t_busy / t_total + total_times = total_times_new[:] + busy_times = busy_times_new[:] - total_times = total_times_new[:] - busy_times = busy_times_new[:] + print("CPU %.2f%% - RAM: %.2f - Temp %.2f" % (100. * np.mean(cores), last_mem, last_temp)) - print() - print("CPU %.2f%% - RAM: %.2f - Temp %.2f" % (100. * np.mean(cores), last_mem, last_temp)) - print("Top memory usage:") - for k, v in sorted(mems.items(), key=lambda item: item[1], reverse=True)[:10]: - print(f"{k.rjust(70)} {v:.2f} MB") + if args.mem: + mems = {} + for proc in m.procs: + name = proc.name + if len(proc.cmdline): + name = proc.cmdline[0] + if len(proc.exe): + name = proc.exe + " - " + name + mems[name] = float(proc.memRss) / 1e6 + print("Top memory usage:") + for k, v in sorted(mems.items(), key=lambda item: item[1], reverse=True)[:10]: + print(f"{k.rjust(70)} {v:.2f} MB") + print()