# 실시간 커널 모니터링 도구

실시간 시스템에서의 모니터링은 매우 중요하다. 실시간 커널 모니터링 도구는 시스템의 성능을 실시간으로 분석하고, 문제를 식별하며, 최적화에 도움을 준다. 아래는 실시간 커널 모니터링에 유용한 몇 가지 도구이다.

#### Ftrace

Ftrace는 리눅스 커널에 내장된 추적 도구로, 시스템 호출, 함수 호출, 인터럽트, 스케줄링 이벤트 등을 추적할 수 있다.

**주요 기능**

* **함수 추적**: 특정 함수 호출을 추적하여 호출 순서와 시간을 분석한다.
* **스케줄러 추적**: 스케줄링 이벤트를 추적하여 스레드 전환 정보를 제공한다.
* **인터럽트 추적**: 인터럽트 발생 시점을 기록한다.

**사용 방법**

1. Ftrace를 활성화한다.

   ```bash
   echo function > /sys/kernel/debug/tracing/current_tracer
   ```
2. 추적할 함수를 설정한다.

   ```bash
   echo some_function > /sys/kernel/debug/tracing/set_ftrace_filter
   ```
3. 추적 결과를 확인한다.

   ```bash
   cat /sys/kernel/debug/tracing/trace
   ```

#### Perf

Perf는 리눅스 성능 분석 도구로, CPU 성능 카운터, 트레이스포인트, kprobes, uprobes 등을 활용하여 시스템 성능을 분석할 수 있다.

**주요 기능**

* **CPU 프로파일링**: CPU 사용량을 분석하여 병목 지점을 식별한다.
* **캐시 분석**: 캐시 히트 및 미스 정보를 제공한다.
* **트레이스포인트**: 특정 이벤트 발생 시점을 기록한다.

**사용 방법**

1. CPU 프로파일링을 시작한다.

   ```bash
   perf record -a
   ```
2. 프로파일링 결과를 분석한다.

   ```bash
   perf report
   ```

#### LatencyTOP

LatencyTOP는 시스템의 지연 시간을 추적하고 분석하는 도구이다. 시스템 콜, 락, 디바이스 드라이버 등에서 발생하는 지연 시간을 식별하여 실시간 성능 최적화에 도움을 준다.

**주요 기능**

* **지연 시간 측정**: 시스템의 지연 시간을 실시간으로 측정한다.
* **지연 원인 분석**: 지연을 유발하는 원인을 식별하고 분석한다.

**사용 방법**

1. LatencyTOP를 실행한다.

   ```bash
   sudo latencytop
   ```
2. 지연 원인과 시간을 분석한다.

#### Trace-cmd

Trace-cmd는 Ftrace를 보다 쉽게 사용할 수 있게 해주는 명령 줄 도구이다. 복잡한 추적 작업을 간편하게 수행할 수 있다.

**주요 기능**

* **Ftrace 제어**: Ftrace의 설정 및 제어를 간편하게 수행한다.
* **추적 데이터 저장**: 추적 데이터를 파일로 저장하여 후속 분석에 활용한다.
* **다양한 출력 형식 지원**: 텍스트, JSON 등 다양한 형식으로 출력할 수 있다.

**사용 방법**

1. 추적을 시작한다.

   ```bash
   trace-cmd start -p function
   ```
2. 추적을 중지하고 데이터를 저장한다.

   ```bash
   trace-cmd stop
   trace-cmd extract
   ```
3. 추적 데이터를 분석한다.

   ```bash
   trace-cmd report
   ```

#### KernelShark

KernelShark는 Ftrace와 Trace-cmd의 추적 데이터를 시각적으로 분석할 수 있는 GUI 도구이다. 다양한 필터링 및 시각화 기능을 제공하여 실시간 시스템 분석에 유용하다.

**주요 기능**

* **데이터 시각화**: 추적 데이터를 그래픽으로 시각화한다.
* **필터링**: 특정 이벤트나 함수를 필터링하여 분석한다.
* **타임라인 분석**: 시간 흐름에 따른 이벤트를 분석한다.

**사용 방법**

1. Trace-cmd로 추적 데이터를 생성한다.

   ```bash
   trace-cmd record -e all
   ```
2. KernelShark에서 추적 데이터를 엽니다.

   ```bash
   kernelshark trace.dat
   ```

### 네트워크 모니터링 도구

실시간 시스템에서는 네트워크 성능 또한 중요하다. 네트워크 모니터링 도구는 네트워크 트래픽, 대기 시간, 패킷 손실 등을 분석하여 네트워크 성능을 최적화하는 데 도움을 준다.

#### Wireshark

Wireshark는 네트워크 프로토콜 분석 도구로, 실시간 네트워크 트래픽을 캡처하고 분석할 수 있다.

**주요 기능**

* **실시간 트래픽 캡처**: 실시간으로 네트워크 트래픽을 캡처한다.
* **프로토콜 분석**: 다양한 네트워크 프로토콜을 분석하여 상세 정보를 제공한다.
* **필터링**: 특정 트래픽이나 프로토콜을 필터링하여 분석한다.

**사용 방법**

1. Wireshark를 실행한다.
2. 네트워크 인터페이스를 선택하고 캡처를 시작한다.
3. 캡처된 트래픽을 분석하고 필터링한다.

#### Iperf

Iperf는 네트워크 성능 테스트 도구로, 대역폭, 지연 시간, 패킷 손실 등을 측정할 수 있다.

**주요 기능**

* **대역폭 측정**: 네트워크 대역폭을 측정한다.
* **지연 시간 측정**: 네트워크 지연 시간을 측정한다.
* **TCP/UDP 테스트**: TCP와 UDP 프로토콜을 모두 지원한다.

**사용 방법**

1. 서버를 시작한다.

   ```bash
   iperf -s
   ```
2. 클라이언트에서 테스트를 수행한다.

   ```bash
   iperf -c <server_ip>
   ```

이 외에도 다양한 도구들이 있지만, 위에 소개한 도구들은 Preempt RT 실시간 시스템에서 주로 사용되는 핵심적인 모니터링 및 분석 도구들이다. 각 도구들은 고유한 기능과 강점을 가지고 있으므로, 목적에 맞게 적절히 활용하는 것이 중요하다.
