- 리눅스 커널에서 제공하는 가장 강력한 트레이서
- 인터럽트, 스케줄링, 워크큐와 같은 커널의 세부 동작을 상세히 트레이싱
- 코드를 수정할 필요 없이 필터로 지정한 함수의 콜 스택 출력
- printk에 비해 오버헤드가 아주 적은 편(바이너리 포맷으로 처리), Ftrace 로그를 활성화해도 시스템 동작에 부하를 거의 주지 않음
- 컨텍스트 정보, CPU번호, 프로세스 정보 확인
- 리눅스 커널을 어느 정도 알아야 ftrace 메시지 해석 가능
- 처음에 ftrace에 익숙해지기 까지 시간이 걸림
- 라즈비안 커널: ftrace의 기본 기능이 모두 활성화
- 현업 프로젝트에서는 ftrace 설정 확인 필요
-> 가끔 nop ftrace만 활성화커널 configuration이란?
- 소스 코드 파일이나 소스 루틴을 빌드하는 기준
- ftrace 를 활성화/비활성화 하려면 tracing_on 파일을 설정
- tracing_on 은 부팅 후 기본적으로 0으로 설정
- tracing_on 을 하고 ftrace를 설정
available_tracers
- ftrace는 다양한 트레이서를 제공
- nop: 기본 트레이서로, ftrace 이벤트만 출력
- function: 함수 트레이서로, set_trace_filter로 지정한 함수를 누가 호출하는지 출력
- function_graph: 함수 실행 시간과 세부 호출 정보를 그래프 포맷으로 출력
- set_ftrace_filter 파일에 트레이싱하려는 함수 이름을 지정
- set_ftrace_filter는 현재 트레이서를 function_graph 와 function 으로 설정할 경우 설정
- available_filter_functions 파일에 포함된 함수만 지정(커널 함수 inline 불가)
- set_ftrace_filter 파일에 필터로 함수를 지정하지 않으면, available_filter_functions 파일에 포함된 모든 커널 함수를 트레이싱
-> 불필요한 로그가 출력되니 반드시 설정
- 트레이스 포인트라고 하며 커널 서브 시스템과 기능별로 세부 동작을 출력하는 기능을 지원
ftrace 이벤트 카테고리