IAR DLIB 라이브러리 힙 사용 통계

기술노트 28545

아키텍처:

Arm

컴포넌트:

general

업데이트:

2021-07-15 오후 10:06

소개

이 기술 노트에서는 애플리케이션에서 힙 사용량 통계를 수집하는 방법에 대해 설명합니다.

논의

IAR Embedded Workbench for ARM 버전 6.60 이상을 사용하면 힙 사용 통계를 수집할 수 있습니다. 즉, malloc 및 유사한 기능에서 사용되는 메모리 양을 추적할 수 있게 됩니다.

기능 활성화

애플리케이션에서 함수 호출을 추가합니다.:

__iar_dlmallinfo()

다음 함수를 호출하면 stderr에 간단히 출력할 수 있습니다:

__iar_dlmalloc_stats()

__iar_dlmalloc_stats()의 출력결과는 다음과 같습니다 (예):

max system bytes =     2048
system bytes     =     2048
in use bytes     =       16

위의 함수들은 선언되고 다음의 파일에서 정의된다.

arm\src\lib\dlib\heap\dlmalloc.c 및
arm\src\lib\dlib\heap\dlmalloc_stat.c.

이러한 기능을 호출하려면 여기서 다운로드할 수 있는 헤더 파일 mallocstats.h를 사용하십시오. (zip 파일에는 함수 호출을 사용하는 방법을 보여주는 main_test.c 예제 파일도 포함되어 있습니다.)

최대 힙 사용량(Maximum heap usage)

다음 텍스트는 시스템 안정성을 위해 힙 크기를 설정하는 방법이라는 제목의 시스템 안정을 위한 스택과 힙 마스터하기 문서에서 가져온 것입니다.

"sbrk()를 에뮬레이션하여 데스크톱 시스템을 모방하는 시스템의 경우, malloc_max_footprint()에 의해 최대 힙 사용량이 제공된다. sbrk()를 에뮬레이트하지 않는 임베디드 시스템의 경우 전체 힙을 메모리 할당자에게 하나의 청크로 제공하는 것이 일반적입니다. 이 경우 malloc_max_footprint()는 무용지물이 됩니다. 즉, 전체 힙의 크기를 반환하기만 하면 됩니다."

기사에는 얼마나 많은 힙을 사용하는지 계산하는 방법에 대한 몇 가지 팁과 요령이 있다.

참조: IAR Embedded Workbench는 sbrk()를 에뮬레이트하지 않습니다.

다양한 버전의 EWARM 처리

IAR Embedded Workbench for ARM 버전 9.30, 9.32 및 9.40에서는 이러한 기능이 해당 구현의 일부이므로 'Advanced Heap'을 활성화해야 합니다.
수행: Project > Options > General Options > Library Options 2 > Heap Selection > Advanced Heap

IAR Embedded Workbench for ARM 8.10 이전 버전의 경우, 파일은  dlmalloc.c and dlmalloc_stat.c are located in the arm\src\lib 디렉터리에 있습니다.

IAR Embedded Workbench for ARM 6.60이전 버전의 경우, 프로젝트에 arm\src\lib\dlmalloc.c 파일을 포함하고, NO_MALLINFONO_MALLOC_STATS 정의를 0으로 설정해야 합니다. 프로젝트 디렉토리에 dlmalloc.c 파일을 복사하여 수정해야 합니다. C++ 프로젝트에서는 dlmalloc.c 파일을 C 파일로 컴파일해야 합니다.

결론

힙 사용량을 측정할 수 있습니다. 힙은 IAR C/C++ Development Guide for ARM Dynamic memory on the heap에 설명되어 있습니다.

 

모든 제품 이름은 해당 소유자의 상표 또는 등록 상표입니다.

죄송하지만, 당사 사이트에서는 Internet Explorer를 지원하지 않습니다.보다 편안한 사이트를 위해 Chrome, Edge, Firefox 등과 같은 최신 브라우저를 사용해 주시길 부탁드립니다.