With the recent bump in persistent metrics size I did some testing to see what the actual limit is. First I found that if you make the persistent_metrics struct too large you get linker errors (which is nice): ... section `.rtc_noinit' will not fit in region `rtc_slow_seg' ... ld: RTC_SLOW segment data does not fit ... region `rtc_slow_seg' overflowed by 8272 bytes The documentation says there is 8K but I see less than 4K is actually available to us. This limit is set in esp-idf in components/esp32/ld/esp32.ld: rtc_slow_seg(RW) : org = 0x50000000 + CONFIG_ULP_COPROC_RESERVE_MEM, len = 0x1000 - CONFIG_ULP_COPROC_RESERVE_MEM (0x1000 = 4096). Testing shows 348 bytes are in use by other code. I can account for only 8 bytes of this in esp-idf exposed code so I assume the other 340 bytes are used in an esp32 library we don't get source for. Regarding the 8K vs. 4K discrepancy, I found this thread about rtc_slow_mem: https://www.esp32.com/viewtopic.php?t=3338 If I understand right, the RTC_SLOW_SEG is 8K not 4K. Am I missing something? [...] I think the higher 4k are reserved for future use by the WiFi driver. In the current versions (latest git), you can modify the size to 8k if you need. I do not see this (a way to adjust the size) in the github version of esp32.ld, it looks the same as what we're using. The bottom line is we're currently limited to 155 persistent floats (20+24*155 = 3740 < 3748) without making the persistent metrics code fancier (or trying to use more of the 8K of rtc slow memory). Craig