Skip to content

Commit 7ca0e50

Browse files
authored
Print memory usage (p/P) only on change (#56)
* print memory usage (p/P): Only print when changed, max-memory No longer spam the memory usage constantly. This makes the output much more useful by allowing to observe each change in memory usage, since the values now no longer get pushed up and scroll out of view rapidly. Changes: - Add `max_used` peak memory usage - Add labels in the output (slightly more verbose, but much clearer) - Remove unnecessary `int64_t` cast - Change "free" to "budget left" to clarify it shows mem that would be free on the real hardware, making situations where it goes negative less confusing - Change field widths so 5 digit values no longer jump out of alignment Example output: ``` Mem: 6720 used (change: -248, peak: 7928) 7616 budget left Mem: 6832 used (change: +112, peak: 7928) 7504 budget left Mem: 6584 used (change: -248, peak: 7928) 7752 budget left Mem: 10856 used (change: +4272, peak: 10848) 3480 budget left Mem: 10888 used (change: +32, peak: 10880) 3448 budget left Mem: 10616 used (change: -272, peak: 10880) 3720 budget left Mem: 6704 used (change: -3912, peak: 10880) 7632 budget left Mem: 6808 used (change: +104, peak: 10880) 7528 budget left ```
1 parent 23bf379 commit 7ca0e50

File tree

1 file changed

+15
-2
lines changed

1 file changed

+15
-2
lines changed

main.cpp

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -832,11 +832,22 @@ class Framework {
832832
lv_obj_del(screen_off_label);
833833
}
834834
}
835+
835836
if (print_memory_usage) {
836-
// print free memory with the knowledge that 14KiB RAM is the actual PineTime-Memory
837837
lv_mem_monitor(&mem_mon);
838-
printf("actual free_size = %d\n", int64_t(mem_mon.free_size) - (LV_MEM_SIZE - 14U*1024U));
838+
if (mem_mon.free_size != mem_mon_last_free_size) {
839+
// 14KiB is the LVGL memory size used in InfiniTime
840+
constexpr uint32_t pinetime_lvgl_memory = 14U*1024U;
841+
uint32_t mem_used = LV_MEM_SIZE - mem_mon.free_size;
842+
// The "budget" value shows how much free lvgl memory the PineTime
843+
// would have free and will go negative when more memory is used
844+
// in the simulator than is available on the real hardware.
845+
int32_t budget = pinetime_lvgl_memory - mem_used;
846+
printf("Mem: %5u used (change: %+5d, peak: %5u) %d budget left\n", mem_used, mem_mon_last_free_size - mem_mon.free_size, mem_mon.max_used, budget);
847+
mem_mon_last_free_size = mem_mon.free_size;
848+
}
839849
}
850+
840851
if (gif_manager.is_in_progress())
841852
{
842853
gif_manager.write_frame();
@@ -883,6 +894,8 @@ class Framework {
883894
bool left_release_sent = true; // make sure to send one mouse button release event
884895
bool right_last_state = false; // varable used to send message only on changing state
885896

897+
uint32_t mem_mon_last_free_size = LV_MEM_SIZE;
898+
886899
GifManager gif_manager;
887900
};
888901

0 commit comments

Comments
 (0)