콘텐츠로 이동

bpftune - eBPF로 자동 커널 조정 치트시트

bpftune - eBPF로 자동 커널 조정 치트시트

bpftune (Oracle)은 eBPF를 사용하여 Linux 커널 매개변수를 자동으로 조정하는 경량 데몬입니다. 관리자가 sysctl 값을 추측해야 하는 대신, eBPF 프로브를 통해 실제 시스템 동작을 관찰합니다. TCP 버퍼 압력, 연결 테이블 포화, 메모리 회수합니다. 부하가 변할 때 관련 매개변수를 지속적으로 조정합니다. 지시 원리는 보이지 않는 것입니다. 거의 제로 오버헤드, 구성 필요 없음, 관리자가 수동으로 설정한 매개변수에서 의도적으로 백오프합니다.

자동 조정은 라이브 시스템에서 커널 동작을 변경합니다. 광범위한 롤아웃 전에 비중요 호스트에서 시도하고 로그를 모니터링하세요.

요구사항

  • BPF 및 BTF 지원이 있는 Linux 커널 (5.15+ 권장)
  • 루트 권한 (eBPF 프로그램 로드, sysctl 쓰기)

설치

플랫폼명령
Oracle Linux / Fedorasudo dnf install bpftune
소스에서git clone https://github.com/oracle/bpftune && make && sudo make install
서비스sudo systemctl enable --now bpftune
확인bpftune -h

실행

명령설명
sudo bpftune포그라운드에서 실행
sudo bpftune -d데몬으로 실행
sudo systemctl start bpftunesystemd를 통해 시작
sudo bpftune -s튜너 및 현재 상태의 요약 표시
journalctl -u bpftune -f라이브 조정 결정 관찰

주요 옵션

플래그효과
-d데몬 모드
-s요약/상태 출력
-S억제 (드라이 런) — 변경할 사항을 로그하되 변경하지 않음
-L학습 모드 / 레거시 동작
-r종료 시 변경사항 롤백
-l LEVEL로그 상세 수준
# 아무것도 변경하지 않고 어떤 것을 조정할 것인지 보기
sudo bpftune -S -l debug

조정 대상

Tuner조정
TCP 버퍼처리량 압력 하의 tcp_rmem / tcp_wmem
TCP 혼잡혼잡 제어 알고리즘 선택
연결 제한큐 오버플로우 시 somaxconn, 백로그 크기
Neighbour 테이블항목이 드롭되면 ARP/ND 테이블 크기
라우트 테이블라우트 캐시 크기 조정
Netns / sysctl적용 가능한 경우 네임스페이스별 동등 항목

피드백 루프의 작동 방식

단계세부사항
관찰eBPF 프로브가 드롭, 오버플로우, 압력 이벤트 개수
결정임계값을 반복적으로 히트하면 매개변수가 병목
조정제한을 증분적으로 올림 (절대 무제한)
재관찰증상이 해제되었는지 확인
백오프관리자가 값을 수동으로 설정하면 혼자 두기

이 “관찰, 치다, 검증” 순환이 진동 없이 지속적으로 실행될 수 있는 이유입니다.

효과 검증

# bpftune이 무엇을 변경했습니까?
sudo bpftune -s

# 조정을 보고했다는 sysctl 확인
sysctl net.ipv4.tcp_rmem net.core.somaxconn

# 수정하고 있던 증상과 상관관계 지정
ss -s                      # socket/queue 통계
netstat -s | grep -i drop  # 조정을 트리거한 드롭

사용 시기

시나리오적합
가변/미지의 워크로드강함 — 부하 변경에 따라 적응
다양한 크기의 클라우드 인스턴스강함 — 인스턴스별 조정 없음
고도로 조정된, 고정 워크로드약함 — 수동 값이 아마 더 나음
엄격한 변경 제어-S 드라이 런 먼저 사용하거나 건너뛰기

bpftune vs 수동/프로필 조정

측면bpftuneTuneD수동 sysctl
모델지속적, 피드백 주도정적 프로필일회성 값
부하에 적응아니오아니오
구성 필요없음프로필 선택전체 전문 지식
수동 설정 존중예 (백오프)덮어쓰기N/A

TuneD (광범위한 정적 프로필)를 보완하고 cpupower와 같은 직접 도구를 보완합니다; bpftune은 특히 네트워크/커널 제한을 대상으로 합니다.

리소스