bpftune - eBPF로 자동 커널 조정 치트시트
bpftune (Oracle)은 eBPF를 사용하여 Linux 커널 매개변수를 자동으로 조정하는 경량 데몬입니다. 관리자가 sysctl 값을 추측해야 하는 대신, eBPF 프로브를 통해 실제 시스템 동작을 관찰합니다. TCP 버퍼 압력, 연결 테이블 포화, 메모리 회수합니다. 부하가 변할 때 관련 매개변수를 지속적으로 조정합니다. 지시 원리는 보이지 않는 것입니다. 거의 제로 오버헤드, 구성 필요 없음, 관리자가 수동으로 설정한 매개변수에서 의도적으로 백오프합니다.
자동 조정은 라이브 시스템에서 커널 동작을 변경합니다. 광범위한 롤아웃 전에 비중요 호스트에서 시도하고 로그를 모니터링하세요.
요구사항
- BPF 및 BTF 지원이 있는 Linux 커널 (5.15+ 권장)
- 루트 권한 (eBPF 프로그램 로드, sysctl 쓰기)
설치
| 플랫폼 | 명령 |
|---|
| Oracle Linux / Fedora | sudo 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 bpftune | systemd를 통해 시작 |
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 수동/프로필 조정
| 측면 | bpftune | TuneD | 수동 sysctl |
|---|
| 모델 | 지속적, 피드백 주도 | 정적 프로필 | 일회성 값 |
| 부하에 적응 | 예 | 아니오 | 아니오 |
| 구성 필요 | 없음 | 프로필 선택 | 전체 전문 지식 |
| 수동 설정 존중 | 예 (백오프) | 덮어쓰기 | N/A |
TuneD (광범위한 정적 프로필)를 보완하고 cpupower와 같은 직접 도구를 보완합니다; bpftune은 특히 네트워크/커널 제한을 대상으로 합니다.
리소스