- Công cụ gọn nhẹ được thiết kế để luôn có thể tự động tinh chỉnh hiệu năng hệ thống bằng cách tận dụng khả năng quan sát của BPF (eBPF)
Những vấn đề cần giải quyết
- Quá nhiều tùy chọn tinh chỉnh: Nhân Linux có hơn 1600 tham số sysctl có thể tinh chỉnh. Việc tìm ra cấu hình phù hợp cho nhiều môi trường khác nhau rất phức tạp và khó khăn
- Giảm sự can thiệp của quản trị viên: Trong các hệ thống đám mây hiện đại, cần quản lý tự động thay vì tinh chỉnh thủ công. Hầu hết hệ thống gần như không có sự can thiệp của quản trị viên sau khi thiết lập ban đầu
- Giới hạn của cấu hình tĩnh: Vì môi trường hệ thống liên tục thay đổi, việc tinh chỉnh bằng các giá trị cố định có thể kém hiệu quả
Các nguyên tắc thiết kế cốt lõi
- Overhead tối thiểu: Tránh theo dõi các sự kiện tần suất cao và chỉ sử dụng khả năng quan sát khi thực sự cần thiết
- Làm rõ mô tả chính sách: Ghi vào syslog "điều gì" đã được thay đổi và "tại sao" nó được thay đổi
- Ưu tiên quản trị viên: Nếu quản trị viên đặt giá trị, chức năng tự động tinh chỉnh sẽ bị vô hiệu hóa
- Nguyên tắc không cần cấu hình: Tự động tinh chỉnh mà không cần cấu hình riêng. Tránh dùng magic number tối đa có thể
- Điều chỉnh động: Khi mức sử dụng bộ nhớ TCP tăng lên, giảm kích thước buffer để giữ cân bằng hệ thống
Các khái niệm chính
- Tuner: Mỗi tuner xử lý các sự kiện phát sinh từ chương trình BPF và quản lý các mục có thể tinh chỉnh liên quan
- Strategy: Mỗi tuner có thể có nhiều strategy, và mỗi strategy chọn ra cách hiệu quả thông qua hàm đánh giá
- Event: Bao gồm ID tuner, kịch bản, thông tin network namespace, v.v.; tuner sẽ thực hiện hành động phù hợp dựa trên thông tin này
Kiến trúc
bpftune là một daemon, tải và quản lý nhiều plugin tuner ở định dạng .so.
- Mỗi tuner có một ID riêng và xử lý sự kiện trong cả BPF lẫn user space.
- Thành phần BPF bao gồm
bpftune.bpf.h và sử dụng các biến dùng chung cùng định nghĩa map.
Danh sách tuner được hỗ trợ
- TCP connection tuner: Tự động tinh chỉnh thuật toán điều khiển tắc nghẽn
- neighbour table tuner: Tự động mở rộng kích thước bảng láng giềng
- route table tuner: Tự động mở rộng kích thước bảng định tuyến
- sysctl tuner: Vô hiệu hóa tuner khi giá trị sysctl đã tinh chỉnh xung đột với cấu hình thủ công
- TCP buffer tuner: Tự động điều chỉnh kích thước buffer TCP
- net buffer tuner: Tự động điều chỉnh tinh chỉnh liên quan đến mạng lõi
- netns tuner: Phát hiện việc thêm và xóa network namespace
2 bình luận
Ý kiến trên Hacker News
bpftuneđược thiết kế là công cụ không cần cấu hìnhCachyOSCachyOS Hello->Apps/Tweaks