WiFi cannot allocate memory in SPIRAM when ISRAM is full

philippe_44
Posts: 26
Joined: Thu May 23, 2019 3:05 pm

WiFi cannot allocate memory in SPIRAM when ISRAM is full

Postby philippe_44 » Fri May 24, 2019 7:04 am

I have an application that allocates lots of mid that were below SPIRAM threshold SPIRAM_MALLOC_ALWAYSINTERNAL. The Wifi driver was failing regularly its memory alloc (and then disconnecting) and I realized that it was happening once the internal memory was consumed by my other applications. Moving SPIRAM_MALLOC_ALWAYSINTERNAL to 2048, which is way below most of my application blocks, the problem went away.
1/ reading the the doc, the WiFi alloc shall not fail, but shall try SPIRAM then
2/ I've set the NEW option to allocate WiFI to SPIRAM first and then fallback to internal and it does not seem to work
I Have the 64MBits SPIRAM, with 1.7MB available

thethinker
Posts: 58
Joined: Thu Mar 01, 2018 1:26 am

Re: WiFi cannot allocate memory in SPIRAM when ISRAM is full

Postby thethinker » Sun Jun 23, 2019 8:13 pm

I have the same issue. As soon as I enable the option for Wifi and LWIP stack to allocate from PSRAM, weird things such as WiFi not connecting starts happening. Were you ever able to figure this out?

philippe_44
Posts: 26
Joined: Thu May 23, 2019 3:05 pm

Re: WiFi cannot allocate memory in SPIRAM when ISRAM is full

Postby philippe_44 » Wed Jul 03, 2019 4:49 pm

Yes, I had to lower the minimum block size that was *always* allocated to internal RAM (CONFIG_SPIRAM_MALLOC_ALWAYSINTERNAL) so that my application would not allocate too much of the internal ram as WiFi *wants* some of its allocation to be in internal ram, regardless of WiFi memory allocation strategy settings

Jonathan2892
Posts: 45
Joined: Tue Dec 07, 2021 4:04 pm

Re: WiFi cannot allocate memory in SPIRAM when ISRAM is full

Postby Jonathan2892 » Wed Sep 18, 2024 10:44 am

Hi,

we are running in the same issue on esp32-s3 and idf 5.3.1, but with the mqtt client.
We have 5 Tasks of our own with total stack sizes 3kB to 6 kB (total stack size: 19kB). Then we use wifi and mqtt, so these esp-internal tasks are also running.
We also have a lot of const maps.

After changing SPIRAM_MALLOC_ALWAYSINTERNAL to 2048 everything works fine.

Is this the proper way? What is the suggestion from espressif or explanation for this behaviour?

Best
Jonathan

Who is online

Users browsing this forum: No registered users and 36 guests