Skip to content

Bpf

  • Published on
    리눅스 7.1(2026년 6월 14일)에 sched_ext의 cgroup 서브 스케줄러 지원이 들어갔습니다. 목표는 분명합니다 — cgroup 트리 어디에나 BPF 스케줄러를 붙이고, 부모 스케줄러가 자식들에게 CPU를 동적으로 배분해서, 컨테이너나 애플리케이션 도메인마다 자기 워크로드에 맞는 스케줄링 정책을 돌리는 것입니다. 동기는 cpuset 하드 파티셔닝이 주지 못하는 유연성이고, 멀티테넌트 머신을 굴리는 사람에게는 오래 기다린 물건입니다. 다만 7.1에 들어간 것은 dispatch 경로를 중심으로 한 핵심 뼈대이고, LWN의 정리를 그대로 옮기면 이 구현은 아직 완성되지 않았습니다 — enqueue 경로가 특히 빠져 있습니다. 즉 헤드라인은 "cgroup마다 다른 스케줄러"지만 오늘 프로덕션에서 그걸 할 수는 없고, 커널 문서조차 이 기능을 이벤트 카운터 한 줄로만 언급합니다. 이 글은 sched_ext 복습부터 서브 스케줄러의 동기와 설계, 7.1에 실제로 들어간 것과 빠진 것, 7.2에서 이어지는 작업, 그리고 지금 시점에 이 기능을 어떻게 대해야 하는지를 정리합니다.
  • Published on
    eBPF의 모든 것 — 1992년 cBPF에서 2014년 eBPF, 그리고 2024년 sched_ext까지의 역사. 11개 레지스터의 가상 머신 ISA, Verifier의 정적 분석, JIT 컴파일, BTF와 CO-RE, 17종 이상의 BPF Map, 200개 넘는 헬퍼 함수, kprobe/uprobe/tracepoint/XDP/tc/LSM/cgroup/sched_ext 어태치 포인트, libbpf vs BCC vs bpftrace, Cilium·Tetragon·Falco·bpftune 실제 사례까지 1,400줄로 정리.