성능 최적화 작업에서 중요한 부분은 시스템의 현재 상태를 정확히 파악하는 것이다. 이를 위해 성능 프로파일링 및 분석 도구가 필요하다. Yocto 프로젝트에서는 여러 가지 도구를 지원하여 시스템 성능을 분석하고 병목 지점을 찾아내는 데 도움을 준다.
oprofile
oprofile은 시스템 전반의 성능 데이터를 수집할 수 있는 프로파일링 도구이다. CPU 사용량, 함수 호출 빈도 등 다양한 성능 데이터를 수집하고 분석할 수 있다.
설정 방법
-
oprofile 레시피 추가:
bash # meta-layer/recipes-devtools/oprofile/oprofile_%.bbappend IMAGE_INSTALL_append = " oprofile"
-
타겟 시스템에서 oprofile 실행:
bash opcontrol --init opcontrol --start # 작업 수행 opcontrol --stop opreport
perf
perf는 Linux 커널의 성능 카운터, 트레이싱, 빌드 프로파일링을 위한 도구이다. 이 도구는 다양한 하드웨어 이벤트를 측정하여 시스템 성능을 분석할 수 있다.
설정 방법
-
perf 레시피 추가:
bash # meta-layer/recipes-kernel/perf/perf_%.bbappend IMAGE_INSTALL_append = " perf"
-
타겟 시스템에서 perf 실행:
bash perf record -a # 작업 수행 perf report
gprof
gprof는 GNU 프로파일링 도구로, 프로그램의 실행 시간 통계를 수집하고 함수 호출 관계를 분석한다.
설정 방법
-
프로그램 컴파일 시
-pg
옵션 추가:make CC = gcc CFLAGS = -pg
-
실행 후 gprof 사용:
bash ./a.out gprof a.out gmon.out > analysis.txt
Valgrind
Valgrind는 메모리 디버깅, 메모리 누수 탐지, 프로그램 프로파일링을 위한 도구이다. 다양한 도구 모음을 제공해서 다목적 성능 분석 작업에 유용하다.
설정 방법
-
Valgrind 레시피 추가:
bash # meta-layer/recipes-devtools/valgrind/valgrind_%.bbappend IMAGE_INSTALL_append = " valgrind"
-
타겟 시스템에서 Valgrind 실행:
bash valgrind --tool=memcheck ./a.out
SystemTap
SystemTap은 런타임 시스템 모니터링 및 성능 프로파일링 도구로, 커널과 사용자 프로그램의 실행 시간을 분석한다.
설정 방법
-
SystemTap 레시피 추가:
bash # meta-layer/recipes-kernel/systemtap/systemtap_%.bbappend IMAGE_INSTALL_append = " systemtap"
-
타겟 시스템에서 SystemTap 스크립트 실행:
bash stap -v -e 'probe kernel.function("do_fork") { printf("do_fork called\n"); }'
기타 도구
이 외에도 Yocto 프로젝트에서 사용할 수 있는 다양한 성능 최적화 도구들이 있다.
- LTTng (Linux Trace Toolkit Next Generation)
- Ftrace
- eBPF (Extended Berkeley Packet Filter)
- DTrace
각 도구는 특정 목적과 특성을 가지고 있어, 사용 목적에 맞는 도구를 선택하는 것이 중요하다.