diff --git a/python_payload/st3m/profiling.py b/python_payload/st3m/profiling.py index f459acac4459fa225cc6104c2d03a5968f3bdd4d..4875dc7d8260d4c7f0914cee2ef595cbbac627ef 100644 --- a/python_payload/st3m/profiling.py +++ b/python_payload/st3m/profiling.py @@ -1,5 +1,6 @@ import sys_kernel from st3m import settings +import gc class ftop: @@ -15,6 +16,7 @@ class ftop: _avg_delta_t_ms_acc = 0 _avg_delta_t_ms_div = 0 _delta_t_ms_throwaway = True + _gc_collect_enabled = True report = "" @staticmethod @@ -102,10 +104,28 @@ class ftop: ftop.delta_t_capture() - ftop_str += "\n\n[think rate]\n" - ftop_str += " avg: " + str(ftop._avg_delta_t_ms) + "ms " - ftop_str += " min: " + str(ftop._min_delta_t_ms) + "ms " - ftop_str += " max: " + str(ftop._max_delta_t_ms) + "ms" + ftop_str += "\n[stats]\n" + ftop_str += " think time | " + ftop_str += " avg: " + str(int(ftop._avg_delta_t_ms)) + "ms" + ftop_str += " min: " + str(int(ftop._min_delta_t_ms)) + "ms" + ftop_str += " max: " + str(int(ftop._max_delta_t_ms)) + "ms" + if ftop._gc_collect_enabled: + gc.collect() + mem_free = gc.mem_free() + mem_used_rel = 1 - mem_free / (1048576 * 8 + 1024 * 512) + if mem_used_rel < 0: + mem_used_rel = 0 + if mem_used_rel > 0.995: + mem_used_rel = 0.995 + ftop_str += "\n mem_free | " + ftop_str += (" " + str(int(mem_used_rel * 100)))[-2:] + ftop_str += "% [" + ftop_str += "#" * int(mem_used_rel * 20) + ftop_str += "." * (20 - int(mem_used_rel * 20)) + ftop_str += "]" + ftop_str += " | free: " + str(mem_free) + "B" + if ftop._gc_collect_enabled: + ftop_str += "\n (ran gc.collect() before capture)" _ = sys_kernel.scheduler_snapshot() return ftop_str