저는 지금 임베디드 장비에 올릴 OS 개발쪽을 담당하고 있습니당
다름이 아니고.. 제가 개발한 기능 포함 OS 전체적으로 개발 test 중인데
시간이 지날수록 memory 사용률이 올라가다가 out of memory 발생하여 임베디드 장비가 rebooting 되버립니다
linux 에서 memory leak이 어디서 발생하는지 알수 있는 방법이 있을까요?
일단 제가 해본 방법으로는 다음과 같습니다.
1. 장비에서 slabtop 으로 조회한 결과, 아래와 같이 kmalloc-32, kmalloc-192 에 대해 점차적으로 size 및 slabs 항목의 값이 시간이 지날수록 커집니다.
메모리 할당 관련해서는 kmem_cache_create(), kmem_cache_alloc(), kmem_cache_free() 를 사용하였습니다
OBJS ACTIVE USE OBJ SIZE SLABS OBJ/SLAB CACHE SIZE NAME
428800 428768 99% 0.03K 3350 128 13400K kmalloc-32
382914 382877 99% 0.19K 18234 21 72936K kmalloc-192
2. 장비에서는 valgrind와 같은 memory leak 확인을 위한 프로그램을 실행시킬 수 없습니다..