성능 최적화 작업에서 중요한 부분은 시스템의 현재 상태를 정확히 파악하는 것이다. 이를 위해 성능 프로파일링 및 분석 도구가 필요하다. Yocto 프로젝트에서는 여러 가지 도구를 지원하여 시스템 성능을 분석하고 병목 지점을 찾아내는 데 도움을 준다.

oprofile

oprofile은 시스템 전반의 성능 데이터를 수집할 수 있는 프로파일링 도구이다. CPU 사용량, 함수 호출 빈도 등 다양한 성능 데이터를 수집하고 분석할 수 있다.

설정 방법

  1. oprofile 레시피 추가: bash # meta-layer/recipes-devtools/oprofile/oprofile_%.bbappend IMAGE_INSTALL_append = " oprofile"

  2. 타겟 시스템에서 oprofile 실행: bash opcontrol --init opcontrol --start # 작업 수행 opcontrol --stop opreport

perf

perf는 Linux 커널의 성능 카운터, 트레이싱, 빌드 프로파일링을 위한 도구이다. 이 도구는 다양한 하드웨어 이벤트를 측정하여 시스템 성능을 분석할 수 있다.

설정 방법

  1. perf 레시피 추가: bash # meta-layer/recipes-kernel/perf/perf_%.bbappend IMAGE_INSTALL_append = " perf"

  2. 타겟 시스템에서 perf 실행: bash perf record -a # 작업 수행 perf report

gprof

gprof는 GNU 프로파일링 도구로, 프로그램의 실행 시간 통계를 수집하고 함수 호출 관계를 분석한다.

설정 방법

  1. 프로그램 컴파일 시 -pg 옵션 추가: make CC = gcc CFLAGS = -pg

  2. 실행 후 gprof 사용: bash ./a.out gprof a.out gmon.out > analysis.txt

Valgrind

Valgrind는 메모리 디버깅, 메모리 누수 탐지, 프로그램 프로파일링을 위한 도구이다. 다양한 도구 모음을 제공해서 다목적 성능 분석 작업에 유용하다.

설정 방법

  1. Valgrind 레시피 추가: bash # meta-layer/recipes-devtools/valgrind/valgrind_%.bbappend IMAGE_INSTALL_append = " valgrind"

  2. 타겟 시스템에서 Valgrind 실행: bash valgrind --tool=memcheck ./a.out

SystemTap

SystemTap은 런타임 시스템 모니터링 및 성능 프로파일링 도구로, 커널과 사용자 프로그램의 실행 시간을 분석한다.

설정 방법

  1. SystemTap 레시피 추가: bash # meta-layer/recipes-kernel/systemtap/systemtap_%.bbappend IMAGE_INSTALL_append = " systemtap"

  2. 타겟 시스템에서 SystemTap 스크립트 실행: bash stap -v -e 'probe kernel.function("do_fork") { printf("do_fork called\n"); }'

기타 도구

이 외에도 Yocto 프로젝트에서 사용할 수 있는 다양한 성능 최적화 도구들이 있다.

각 도구는 특정 목적과 특성을 가지고 있어, 사용 목적에 맞는 도구를 선택하는 것이 중요하다.