메모리 사용량 현황 데이터를 보고할 수 있도록 sgx_emmt하는 기호가 있는 엔클레이브 이미지를 생성하는 방법
- sgx-gdb로 인텔® Software Guard Extensions(인텔® SGX) 응용 프로그램을 디버깅하고 sgx_emmt 사용하여 메모리 사용량을 확인했습니다.
- 스택 사용량은 표시되지만 최대 힙 및 커밋된 예약된 메모리는 표시되지 않습니다.
[Peak stack used]: 7 KB
[Can't get peak heap used]: You may use version script to control symbol export. Please export 'g_peak_heap_used' in your version script.
[Can't get peak committed reserved memory]: You may use version script to control symbol export. Please export 'g_peak_rsrv_mem_committed' in your version script.
Linux*용 인텔® Software Guard Extensions(인텔® SGX) 개발자 참조 가이드의 엔클레이브 메모리 측정 도구 섹션에 따라 엔클레이브의 버전 스크립트에서 기호 g_peak_heap_used와 g_peak_rsrv_mem_committed를 내보내고 아래 설명된 대로 엔클레이브 이미지를 버전 스크립트와 연결합니다.
인텔 SGX SDK의 SampleEnclave를 참조하여 메이크파일 및 버전 스크립트인 SampleEnclave/Enclave.lds를 다시 사용합니다.
- 엔클레이브 버전 스크립트의 콘텐츠로 파일을 생성합니다.
enclave.so
{
global:
g_global_data_sim;
g_global_data;
enclave_entry;
g_peak_heap_used;
g_peak_rsrv_mem_committed;
local:
*;
};
- Enclave의 원본 디렉터리에 스크립트를 Enclave.lds로 저장합니다.
- enclave를 버전 스크립트와 연결하고 다음과 유사하게 Makefile에서 기호 __ImageBase 정의합니다.
$ ld -o enclave.so file1.o file2.o \
-pie -eenclave_entry -nostdlib -nodefaultlibs –nostartfiles --no-undefined \
--whole-archive –lsgx_trts --no-whole-archive \
--start-group –lsgx_tstdc ––lsgx_tservice -lsgx_crypto -
-end-group \
-Bstatic -Bsymbolic --defsym=__ImageBase=0 --exportdynamic \
--version-script=enclave.lds
Linux*용 최신 인텔® Software Guard Extensions 개발자 참조 안내서는 Linux*용 인텔® Software Guard Extensions SDK 최신 릴리스의 설명서 섹션에 있습니다.