FTRACE

Category
아이템: FTRACE(16)
포스트 갯수16

[리눅스커널][ftrace] 커널 타이머: jiffies와 Soft IRQ 타이머 서비스 처리 횟수 확인

By Guillermo Austin Kim | 2020년 4월 21일 | 
Overview ftrace는 리눅스 커널의 마법과 같은 도구입니다. 그래픽 효과가 없는 텍스트 포멧의 리눅스의 단점을 대체하기 충분하다고 봅니다. 이번에는 동적 타이머와 Soft IRQ 타이머 서비스를 동시에 ftrace 로그를 통해 분석해 보겠습니다. 이 디버깅은 라즈베리 파이에서 수행했다는 사실을 참고합시다. 결론 먼저, 요점부터 말하겠습니다. 이 ftrace 메시지를 분석한 후 알게 될 내용은 다음과 같습니다. ■ 1초 동안에 지피스는 100번 업데이트된다.(라즈베리 파이 기준) ■ 1초에 Soft IRQ 타이머 서비스를 요청하는 횟수는 13번(100번 미만)이다. ■ 1초에 Soft IRQ 동적 타이머를 실행하는 횟수는 13번이다. 먼저 커널

[리눅스커널] 커널 디버깅과 코드 학습: ftrace란

By Guillermo Austin Kim | 2020년 2월 23일 | 
printk와 dump_stack을 활용해 커널 디버깅을 하던 리눅스 커널 개발자들은 여러 불편함을 느끼기 시작했습니다. 즉, 다음과 같은 요건을 충족하는 커널 디버깅 기능이 있으면 좋겠다고 생각하게 됩니다.  함수 호출 흐름을 소스코드를 수정하지 않고도 보고 싶다. 커널 세부 실행 정보를 출력해 줬으면 좋겠다. 1초에 수십 번 호출해도 성능에 부담을 주지 않았으면 좋겠다. 커널 로그도 함께 보고 싶다. 이런 요구사항을 모두 충족하는 커널 디버깅 기능이 바로 ftrace입니다. ftrace는 리눅스 커널에서 제공하는 가장 강력한 트레이서입니다. ftrace는 커널 개발자에게 축복과도 같은데, 커널 세부 동작을 알기 쉽게 출력하기 때문입니다. ---트레이서는 strace나 ltrace처럼 리눅스

[리눅스커널][디버깅] ftrace: ftrace를 비활성화하기

By Guillermo Austin Kim | 2020년 1월 15일 | 
보통 프로덕션 빌드로 이미지를 생성하려고 할 때 커널에서 ftrace를 아예 꺼버리고 싶을 때가 있다. 이 때 다음 패치를 적용해보자. diff --git a/kernel/trace/trace.c b/kernel/trace/trace.cindex 40817e4..2cf0d86 100644--- a/kernel/trace/trace.c+++ b/kernel/trace/trace.c@@ -273,6 +273,7 @@ unsigned long long ns2usecs(u64 nsec) */ static struct trace_array global_trace = { .trace_flags = TRACE_DEFAULT_FLAGS,+ .buffer_disabled = 1, }; LIST

[리눅스커널] 스케줄링/디버깅: ftrace: 스케줄링 실행 시 콜스택 파악하기

By Guillermo Austin Kim | 2019년 9월 15일 | 
sched_switch와 sched_wakeup 이벤트는 각각 프로세스 스케줄링과 프로세스를 깨우는 동작을 트레이싱합니다. 이번에는 스케줄링이 실행할 때 콜스택을 점검해 보겠습니다. 커널에선 2가지 타입 스케줄링을 지원합니다. [그림 10.48] 2가지 스케줄링 종류과 동작 방식 스케줄링 종류 별로 어떤 콜스택인지 점검합시다. 먼저 ftrace 설정을 위한 다음 코드를 소개합니다.1 #!/bin/bash2 3 echo 0 > /sys/kernel/debug/tracing/tracing_on4 sleep 15 echo "tracing_off"67 echo 0 > /sys/kernel/debug/tracing/events/enable8 sleep 19 echo "events disabled"1