/sys/kernel/debug/tracing 이라는 폴더에 ftrace가 있다.
ftrace는 성능에서 실질적으로 오버헤드가 없는 상태에서 추적이 가능하다
라고 문서에 나와있지만 netperf 측정시, ftrace를 키고하니 성능이 30%정도 내려갔다.
일반 프로그램에선 오버헤드가 별로 없지만 커널 컴파일등의 상황에서는 오버헤드를 확인할 필요가 있다.
기본사용법으로
1. 필터할 커널 함수 설정
2. trace되는 결과 설정
3. trace 결과
4. 추가적인 옵션
1. trace filter 함수 설정
set_ftrace_filter 파일에 어떤 함수를 trace하고 싶은지 설정한다.
$echo vhost* > set_ftrace_filter
$echo handle_rx* >> set_ftrace_filter
$echo handle_tx* >> set_ftrace_filter
$cat set_ftrace_filter
방법은 위와같이 필터하고 싶은 함수이름을 set_ftrace_filter 파일에 넣으면 된다.
2. trace되는 결과 설정
current_tracer파일을 설정하면된다.
hwlat blk mmiotrace function_graph wakeup_dl wakeup_rt wakeup function nop
등의 여러가지 옵션이 있다.
자주사용하는 3가지옵션은
nop : trace하지않는다.
function : trace결과를 함수형으로 저장한다.
function_graph : trace결과를 함수형 그래프로 저장한다.
$echo function_graph > current_tracer
예를들어 함수형 그래프로 trace결과를 설정한다.
3. trace 결과
trace결과는 trace이라는 파일에 저장되어있다.
cat trace
cpu, duration, function, calls 등이 기본 옵션이다.
4. 추가적인 옵션
available_filter_functions에는 추적 가능한 함수 목록이 있다.
cat available_filter_functions | grep vhost
만약 vhost 관련 함수들을 모두 추적하고 싶다면 위의 명령어로 목록을 확인하면 된다.
echo funcgraph-abstime > trace_options
등과 같은 옵션을 통해서 세부 trace 옵션을 지정할수 있다.
위의 옵션은 function_graph에서 absolute time을 표시하는 옵션이다.
제거 할때는 echo nofuncgraph-abstime > trace_options 옵션을 추가하면 된다.
상황에 맞는 옵션을 선택하여 좀더 효율적인 커널 성능측정을 할수있다.
자세한 사항은 문서 참고
'Programming > Linux' 카테고리의 다른 글
netperf 우분투 네트워크 성능 측정 도구(ubuntu network performance tool) (0) | 2020.02.25 |
---|---|
리눅스 용량 부족할때 커널로그 삭제 (0) | 2019.10.24 |
Linux module comfile kernel 리눅스 모듈 컴파일 커널 함수 실행시간 측정 (0) | 2019.08.14 |
perf 설명 및 간단 사용법 (Performance Counter for Linux) (1) | 2019.06.20 |
우분투 프로파일링 perf, top 정확도(ubuntu performance tools) (1) | 2019.06.20 |