eBPF로 Linux 커널 동작 실시간 추적하기
커널 재컴파일 없이 안전하게 실행되는 eBPF 프로그램으로 Linux 커널을 실시간 추적하는 방법. bpftrace, BCC, kprobe, tracepoint 완벽 가이드.
커널 재컴파일 없이 안전하게 실행되는 eBPF 프로그램으로 Linux 커널을 실시간 추적하는 방법. bpftrace, BCC, kprobe, tracepoint 완벽 가이드.
ARM64(AArch64)에서 inline asm은 문법이 어렵다기보다, 컴파일러가 더 엄격하고 최적화가 더 공격적이라서 사고가 난다. 특히 벤더 커널을 Clang으로 옮길 때는 constraint 선택, clobber, barrier 세 가지가 대부분의 원인이다. 이 글에서는 ARM64에서…
이 글은 Ubuntu 환경에서 Clang/LLVM 툴체인을 이용해 Linux 커널을 실제로 빌드하는 방법을 단계별로 정리한다. Clang/LLVM 툴체인 설치는 아래 글을 먼저 확인한다. https://junorionblog.co.kr/linux-%ec%bb%a4%eb%84%90-clang-llvm-%ed%88%b4%ec%b2%b4%ec%9d%b8-%ec%a4%80%eb%b9%84%ed%95%98%ea%b8%b0/ Ubuntu 커널 빌드에 대한 건 아래 글을 참고한다.…
ftrace는 리눅스 커널에 내장된 강력한 추적 도구로, 함수 호출, 스케줄 및 이벤트 추적을 가능하게 하는 강력한 디버깅 및 프로파일링 도구이다. 이 블로그 글에서는 ftrace를 사용하여 리눅스 커널 함수를 추적하는 방법에…
dump_stack() 함수는 리눅스 커널 디버깅의 핵심 도구 중 하나로, 콜 스택을 커널 로그로 볼 수 있게 한다. 커널 개발자들은 이 함수를 활용하여 프로그램의 동작을 추적하고 문제 해결을 위한 힌트를 얻을…
printk() 함수는 리눅스 커널에서 메시지 출력과 디버깅을 위한 핵심 도구 중 가장 기본이 되는 도구이다. 이 글에서는 printk() 함수의 기능, 사용법, 예제 코드, 그리고 유용한 팁에 대해 알아본다. printk() 함수…
리눅스 커널은 다양한 비동기 작업을 관리하기 위한 여러 메커니즘을 제공하는데, 그 중 Tasklet과 Workqueue는 주목할 만한 두 가지 방법이다. 이 두 가지 메커니즘은 각각 고유한 특성과 사용 사례를 가지고 있으며,…
cgroup v1 하에서는 시스템 프로세스들에 대한 계층 구조를 각기 제공하는 별게 cgroup 파일시스템의 각 컨트롤러를 마운트 할 수 있다. 또한 같은 cgroup 파일시스템에 여러 (또는 모든) cgroup v1 컨트롤러들을 함께…
리눅스 커널에서 initcalls는 초기화 함수를 실행하는 메커니즘으로 커널 초기화 단계에서 시스템의 다양한 구성 요소를 초기화하는 데 사용된다. 이번 글에서는 initcalls의 동작 원리와 사용 방법에 대해 알아보고, 커널 코드 및 예제를…
cgroups Notification API를 통해 cgroup의 상태 변경에 대한 알림을 받을 수 있다. 이를 활용하면 메모리 Threshold를 등록하고 도달 시 알림을 받을 수 있다. 메모리 Threshold 등록 방법 메모리 Threshold를 등록하기…