lwIP 최대 버퍼 사용량 계산과 관련 있는 요소들

lwIP 라이브러리가 이론상 최대로 사용하는 메모리를 계산하는 방식이 있다.




이론적으로 그리고 간접적으로 계산하는 것이기 때문에 실제로 들어맞는 것은 아닐것이다.




CPU 처리속도, 발열, lwIP 외의 로직 등 MCU에 영향 주는 것이 많기 때문이다.




실제로 활용할 뻔 했으나, 개인적인 사정으로 활용하지 않았지만 정리하기 위해 내용을 남겨둡니다.




피크 버퍼 사용량 계산




lwIP가 소비하는 최대 힙 메모리 는 lwIP가 소비하는 이론상 최대 메모리 이다.




일반적으로 lwIP가 사용하는 최대 힙 메모리는 다음에 따라 다릅니다.




  • UDP 연결을 생성하는 데 필요한 메모리: lwip_udp_conn
  • TCP 연결을 생성하는 데 필요한 메모리: lwip_tcp_conn
  • 애플리케이션에 있는 UDP 연결 수: lwip_udp_con_num
  • 애플리케이션에 있는 TCP 연결 수: lwip_tcp_con_num
  • TCP TX 창 크기: lwip_tcp_tx_win_size
  • TCP 수신 창 크기: lwip_tcp_rx_win_size




따라서 LwIP가 소비하는 최대 힙 메모리는 다음 공식으로 계산할 수 있다.




lwip_dynamic_peek_memory = (lwip_udp_con_num * lwip_udp_conn) + (lwip_tcp_con_num * (lwip_tcp_tx_win_size + lwip_tcp_rx_win_size + lwip_tcp_conn))




참고링크




https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-guides/lwip.html#netconn-api




Comments

댓글을 불러오고 있습니다.