Linux CO-RE(Compile Once – Run Everywhere)란? 하나의 eBPF 프로그램으로 다양한 커널을 지원하는 기술 완벽 이해

eBPF는 Linux Kernel 내부에서 동작하는 강력한 기술이지만, 과거에는 커널 버전마다 구조체(Layout)가 달라질 수 있기 때문에 eBPF 프로그램을 다시 컴파일해야 하는 문제가 있었습니다. 예를 들어 Ubuntu 22.04에서 만든 eBPF 프로그램이 Rocky Linux 9나 Debian 12에서는 정상적으로 동작하지 않는 경우가 발생했습니다. 커널 내부 구조체의 위치와 크기가 달라질 수 있기 때문입니다. 이 문제를 해결하기 위해 등장한 기술이 CO-RE(Compile … 더 읽기

Linux bpftool이란? eBPF 프로그램과 BPF Map을 관리하는 공식 도구 완벽 이해

Linux에서 eBPF를 사용할 때 프로그램을 작성하는 것만큼 중요한 것이 현재 커널에 어떤 eBPF 프로그램이 로드되어 있는지 확인하고 관리하는 작업입니다. 이를 위해 Linux Kernel에서 공식적으로 제공하는 관리 도구가 바로 bpftool입니다. bpftool은 현재 실행 중인 eBPF 프로그램, BPF Map, 링크(Link), BTF(BPF Type Format), 네트워크 연결 상태 등을 확인하고 관리할 수 있는 강력한 CLI(Command Line Interface) 도구입니다. 운영 … 더 읽기

Linux bpftrace란? 한 줄 명령으로 eBPF를 사용하는 강력한 추적 도구 완벽 이해

eBPF는 Linux Kernel 내부를 매우 세밀하게 분석할 수 있는 강력한 기술이지만, 일반적으로는 C 언어를 이용해 프로그램을 작성하고 컴파일한 뒤 커널에 로드해야 합니다. 이러한 과정은 학습 비용이 높고 간단한 문제를 확인하기에도 다소 번거롭습니다. 이러한 불편함을 해결하기 위해 등장한 것이 bpftrace입니다. bpftrace는 AWK와 DTrace 문법을 참고하여 만든 고수준 eBPF 추적 도구로, 한 줄 명령만으로도 프로세스, 시스템 콜, … 더 읽기

Linux BCC(BPF Compiler Collection)란? eBPF 프로그램을 쉽게 개발하는 도구 완벽 이해

eBPF는 Linux Kernel 내부에서 다양한 작업을 수행할 수 있는 강력한 기술이지만, 처음부터 C 언어로 eBPF 프로그램을 작성하고 컴파일하여 로드하는 과정은 상당히 복잡합니다. 이러한 어려움을 해결하기 위해 등장한 것이 BCC(BPF Compiler Collection) 입니다. BCC는 eBPF 프로그램을 쉽게 작성하고 실행할 수 있도록 다양한 라이브러리와 도구를 제공하는 프로젝트입니다. Python이나 Lua 같은 고수준 언어와 함께 사용할 수 있어 eBPF … 더 읽기

Linux TC(Traffic Control)와 eBPF란? 패킷 제어와 트래픽 관리 기술 완벽 이해

Linux 서버에서는 단순히 패킷을 전달하는 것만으로는 충분하지 않습니다. 서비스 품질(QoS)을 유지하고 네트워크 대역폭을 효율적으로 사용하기 위해서는 트래픽 제어(Traffic Control, TC) 기능이 필요합니다. 과거에는 tc 명령어를 이용하여 큐(Queue)와 필터(Filter)를 설정하는 방식이 일반적이었습니다. 하지만 최근에는 eBPF와 결합하여 더욱 유연하고 강력한 패킷 처리와 트래픽 관리가 가능해졌습니다. 이번 글에서는 Linux Traffic Control의 개념과 구조, Queue Discipline(Qdisc), eBPF와의 관계, 주요 … 더 읽기

Linux XDP(eXpress Data Path)란? 초고속 패킷 처리를 위한 eBPF 네트워크 기술 완벽 이해

최근 Linux 네트워크 분야에서 가장 주목받는 기술 중 하나가 XDP(eXpress Data Path) 입니다. 기존 Linux 네트워크 스택은 다양한 기능을 제공하지만, 패킷이 커널 네트워크 계층을 모두 통과해야 하기 때문에 초당 수백만 개의 패킷(PPS)을 처리하는 환경에서는 성능 한계가 발생할 수 있습니다. 이를 해결하기 위해 등장한 기술이 XDP입니다. XDP는 네트워크 인터페이스 카드(NIC)에서 수신한 패킷을 Linux 네트워크 스택에 전달하기 … 더 읽기

Linux Uprobe란? 사용자 공간(User Space) 함수까지 추적하는 eBPF 동적 분석 기술 완벽 이해

Linux에서 성능 분석이나 장애 원인을 파악할 때는 커널 함수뿐 아니라 사용자 공간(User Space) 에서 실행되는 함수도 분석해야 하는 경우가 많습니다. 예를 들어 Nginx, MySQL, Redis, Java 애플리케이션 등이 느려졌다면 커널이 아니라 애플리케이션 내부 함수에서 병목이 발생했을 가능성이 있습니다. 이때 사용하는 기술이 Uprobe(User Probe) 입니다. Uprobe는 사용자 공간 프로그램의 함수에 동적으로 Probe를 삽입하여 실행 흐름을 추적하는 … 더 읽기

Linux Kprobe란? 원하는 커널 함수를 실시간으로 추적하는 동적 커널 디버깅 기술 완벽 이해

Linux 시스템에서 성능 문제를 분석하거나 커널 내부 동작을 확인하려면 특정 함수가 언제 호출되는지 알아야 하는 경우가 많습니다. Tracepoint는 커널에 미리 정의된 이벤트만 추적할 수 있지만, 원하는 함수가 Tracepoint로 제공되지 않는 경우도 있습니다. 이때 사용하는 기술이 Kprobe(Kernel Probe) 입니다. Kprobe는 실행 중인 Linux Kernel의 거의 모든 함수에 동적으로 Hook을 설치하여 함수 호출을 추적할 수 있는 기능입니다. … 더 읽기

Linux Tracepoint란? eBPF와 성능 분석을 위한 커널 이벤트 추적 기술 완벽 이해

Linux 서버의 성능 문제를 분석하거나 시스템 내부에서 어떤 일이 발생하는지 확인하려면 커널 이벤트(Kernel Event) 를 관찰해야 합니다. 과거에는 Kernel 로그나 디버깅 기능에 의존하는 경우가 많았지만, 최근에는 eBPF와 함께 Tracepoint를 활용하는 방식이 표준이 되었습니다. Tracepoint는 Linux Kernel에 미리 정의된 이벤트 지점으로, 특정 동작이 발생할 때마다 정보를 수집할 수 있는 기능입니다. eBPF 프로그램을 Tracepoint에 연결하면 커널을 수정하지 … 더 읽기

Linux BPF Map이란? eBPF 프로그램이 데이터를 저장하고 공유하는 핵심 구조 이해

eBPF 프로그램은 Linux Kernel 내부에서 실행되지만 일반 프로그램처럼 전역 변수를 자유롭게 사용할 수 없습니다. 또한 커널에서 수집한 데이터를 사용자 공간(User Space)으로 전달하거나 여러 eBPF 프로그램 간에 데이터를 공유해야 하는 경우도 많습니다. 이때 사용하는 핵심 기능이 BPF Map입니다. BPF Map은 eBPF 프로그램이 사용하는 데이터 저장소이며, Kernel과 User Space가 데이터를 안전하게 공유하는 통로 역할을 합니다. 이번 글에서는 … 더 읽기