실시간 시스템에서 타이밍 분석 도구는 매우 중요한 역할을 한다. 이러한 도구들은 시스템의 응답 시간을 측정하고, 잠재적인 문제를 식별하며, 시스템 성능을 최적화하는 데 도움을 준다. 이번 장에서는 실시간 리눅스 환경에서 사용할 수 있는 주요 타이밍 분석 도구들에 대해 살펴보겠다.
1. Ftrace
Ftrace는 리눅스 커널에 내장된 추적 도구로서, 함수 호출을 추적하고 타이밍 정보를 수집할 수 있는 강력한 도구이다.
설치 및 설정
Ftrace는 리눅스 커널에 기본적으로 포함되어 있으며, /sys/kernel/debug/tracing
디렉토리를 통해 접근할 수 있다. 이를 활성화하려면 먼저 디버그 파일 시스템을 마운트해야 한다:
sudo mount -t debugfs none /sys/kernel/debug
사용법
다음은 Ftrace를 사용하는 기본적인 단계이다:
-
현재 추적할 수 있는 이벤트 리스트 확인:
bash cat /sys/kernel/debug/tracing/available_events
-
특정 이벤트를 선택하여 추적 활성화:
bash echo "sched:sched_switch" > /sys/kernel/debug/tracing/set_event
-
추적 시작:
bash echo 1 > /sys/kernel/debug/tracing/tracing_on
-
결과 확인:
bash cat /sys/kernel/debug/tracing/trace
-
추적 중지:
bash echo 0 > /sys/kernel/debug/tracing/tracing_on
2. Perf
Perf는 리눅스 커널의 성능 분석 도구로, 시스템 성능의 각종 메트릭스를 측정하고 분석할 수 있다.
설치
Perf는 일반적으로 linux-tools
패키지에 포함되어 있다. 다음 명령어를 사용하여 설치할 수 있다:
sudo apt-get install linux-tools-common linux-tools-generic
사용법
Perf의 사용 예시는 다음과 같다:
-
CPU 사이클 및 명령어 카운터:
bash perf stat -e cycles,instructions ls
-
주요 기능 프로파일링:
bash perf record -g ./my_program perf report
3. LTTng (Linux Trace Toolkit: Next Generation)
LTTng는 복잡한 애플리케이션과 시스템의 성능 분석을 위해 설계된 고성능 추적 도구이다.
설치
LTTng는 다음 명령어로 설치할 수 있다:
sudo apt-get install lttng-tools lttng-modules-dkms babeltrace
사용법
LTTng를 사용하는 기본적인 단계는 다음과 같다:
-
새 추적 세션 생성:
bash lttng create my_session
-
추적할 이벤트 활성화:
bash lttng enable-event -a -k
-
추적 시작:
bash lttng start
-
추적 중지:
bash lttng stop
-
결과 확인:
bash babeltrace /path/to/trace
4. Cyclictest
Cyclictest는 실시간 커널의 응답 시간을 측정하는 도구로, 주로 RT 커널의 성능을 평가하는 데 사용된다.
설치
Cyclictest는 rt-tests
패키지에 포함되어 있다:
sudo apt-get install rt-tests
사용법
Cyclictest를 사용하여 시스템 응답 시간을 측정하는 방법은 다음과 같다:
sudo cyclictest -l100000 -m -S -p80 -i1000 -h400 -q
-l
: 테스트 루프 수-m
: 메모리 잠금 (페이지 폴트 방지)-S
: 스레드 우선 순위 상승-p
: 스레드 우선 순위 설정-i
: 주기 (마이크로초)-h
: 히스토그램 출력 (마이크로초)-q
: 결과 요약만 출력
5. Tuna
Tuna는 리눅스 성능 조정 도구로, 실시간 태스크의 CPU 및 IRQ 애피니티를 조정하고 우선 순위를 설정할 수 있다.
설치
Tuna는 tuna
패키지에 포함되어 있다:
sudo apt-get install tuna
사용법
Tuna는 GUI와 CLI 모드 모두에서 사용할 수 있다:
-
GUI 모드 실행:
bash sudo tuna
-
CLI 모드 예제: 특정 CPU에 IRQ를 할당하고 우선 순위를 설정하는 방법은 다음과 같다:
bash sudo tuna -q -I irq9 -c 1 -m
6. Trace-cmd
Trace-cmd는 Ftrace를 보다 쉽게 사용할 수 있도록 하는 커맨드 라인 도구이다.
설치
Trace-cmd는 다음 명령어로 설치할 수 있다:
sudo apt-get install trace-cmd
사용법
Trace-cmd를 사용하여 추적 데이터를 수집하고 분석하는 방법은 다음과 같다:
-
추적 세션 시작:
bash sudo trace-cmd start -e sched_switch
-
추적 세션 중지:
bash sudo trace-cmd stop
-
결과 보기:
bash sudo trace-cmd report
7. KernelShark
KernelShark는 Ftrace와 Trace-cmd 데이터를 시각적으로 분석할 수 있는 GUI 도구이다.
설치
KernelShark는 다음 명령어로 설치할 수 있다:
sudo apt-get install kernelshark
사용법
Trace-cmd와 함께 KernelShark를 사용하면 추적 결과를 보다 쉽게 분석할 수 있다:
-
Trace-cmd로 데이터 수집:
bash sudo trace-cmd record -e sched_switch
-
KernelShark로 데이터 열기:
bash kernelshark trace.dat
이 장에서는 실시간 리눅스 환경에서 사용할 수 있는 다양한 타이밍 분석 도구들에 대해 살펴보았다. 각각의 도구는 고유한 기능과 용도를 가지고 있으며, 특정 시나리오와 요구 사항에 맞게 선택하고 활용할 수 있다. 이러한 도구들을 활용하여 시스템의 성능을 모니터링하고 최적화하면, 보다 안정적이고 예측 가능한 실시간 애플리케이션을 개발할 수 있다.