리눅스데브코스 [7주차 - 5(6)]<Ftrace>

심우열·2023년 5월 22일
0

1. Ftrace

1. Ftrace란?

  • 리눅스 커널에서 제공하는 가장 강력한 트레이서

1. Ftrace의 특징

  • 인터럽트, 스케줄링, 워크큐와 같은 커널의 세부 동작을 상세히 트레이싱
  • 코드를 수정할 필요 없이 필터로 지정한 함수의 콜 스택 출력
  • printk에 비해 오버헤드가 아주 적은 편(바이너리 포맷으로 처리), Ftrace 로그를 활성화해도 시스템 동작에 부하를 거의 주지 않음
  • 컨텍스트 정보, CPU번호, 프로세스 정보 확인

2. Ftrace의 단점

  • 리눅스 커널을 어느 정도 알아야 ftrace 메시지 해석 가능
  • 처음에 ftrace에 익숙해지기 까지 시간이 걸림

2. Ftrace 사용하기

1. 커널 configuration 활성화

  • 라즈비안 커널: ftrace의 기본 기능이 모두 활성화
  • 현업 프로젝트에서는 ftrace 설정 확인 필요
    -> 가끔 nop ftrace만 활성화

커널 configuration이란?

  • 소스 코드 파일이나 소스 루틴을 빌드하는 기준

3. Ftrace 설정

1. tracing on

  • ftrace 를 활성화/비활성화 하려면 tracing_on 파일을 설정
  • tracing_on 은 부팅 후 기본적으로 0으로 설정
  • tracing_on 을 하고 ftrace를 설정

2. nop tracer 설정 쉘 스크립트

3. 트레이서의 종류

available_tracers

4. current_tracer

  • ftrace는 다양한 트레이서를 제공
  • nop: 기본 트레이서로, ftrace 이벤트만 출력
  • function: 함수 트레이서로, set_trace_filter로 지정한 함수를 누가 호출하는지 출력
  • function_graph: 함수 실행 시간과 세부 호출 정보를 그래프 포맷으로 출력

5. set_ftrace_filter

  • set_ftrace_filter 파일에 트레이싱하려는 함수 이름을 지정
  • set_ftrace_filter는 현재 트레이서를 function_graph 와 function 으로 설정할 경우 설정
  • available_filter_functions 파일에 포함된 함수만 지정(커널 함수 inline 불가)
  • set_ftrace_filter 파일에 필터로 함수를 지정하지 않으면, available_filter_functions 파일에 포함된 모든 커널 함수를 트레이싱
    -> 불필요한 로그가 출력되니 반드시 설정

3. Ftrace 메시지 분석

1. Ftrace 이벤트란?

  • 트레이스 포인트라고 하며 커널 서브 시스템과 기능별로 세부 동작을 출력하는 기능을 지원

ftrace 이벤트 카테고리

2. ftrace 메시지의 기본 정보를 분석하는 방법

3. 컨텍스트 정보 분석하기

profile
Dev Ops, "Git, Linux, Docker, Kubernetes, ansible, " .

0개의 댓글