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_MALLINFO
및 NO_MALLOC_STATS
정의를 0으로 설정해야 합니다. 프로젝트 디렉토리에 dlmalloc.c 파일을 복사하여 수정해야 합니다. C++ 프로젝트에서는 dlmalloc.c
파일을 C 파일로 컴파일해야 합니다.
결론
힙 사용량을 측정할 수 있습니다. 힙은 IAR C/C++ Development Guide for ARM의 Dynamic memory on the heap에 설명되어 있습니다.
모든 제품 이름은 해당 소유자의 상표 또는 등록 상표입니다.