20 điểm bởi xguru 2024-11-19 | 2 bình luận | Chia sẻ qua WhatsApp
  • 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

 
xguru 2024-11-19

Ý kiến trên Hacker News

  • Có lo ngại rằng việc chẩn đoán và khắc phục sự cố hệ thống có thể trở nên khó khăn hơn
  • Khái niệm "vòng phản hồi" rất quan trọng để giải thích khả năng phát sinh vấn đề
    • Đây không phải là vấn đề của Linux kernel, BPF hay bản thân chương trình, mà là do cách nó vận hành
    • Có thể không có rủi ro, hoặc có thể có cơ chế kiểm soát, và ngay cả khi xảy ra vấn đề thì cũng có thể hội tụ về trạng thái ổn định
  • Lý thuyết điều khiển dường như vẫn đang được áp dụng chưa đủ trong kỹ thuật phần mềm
  • Muốn nghe ý kiến từ những người đang sử dụng công cụ này
    • Tò mò không biết nó có hiệu quả không, và thời gian thiết lập có đáng giá hay không
  • bpftune được thiết kế là công cụ không cần cấu hình
    • Hoan nghênh kiểu hỗ trợ tự động này vì không cần phải học quá nhiều thiết lập
  • Có thể dùng ngay trên CachyOS
    • Sau khi cài đặt, có thể truy cập qua CachyOS Hello -> Apps/Tweaks
  • Tò mò về hiệu quả của nó trong môi trường đa tenant như cụm k8s dùng chung
    • Mỗi ứng dụng có mục tiêu khác nhau và sẽ di chuyển giữa các node theo thời gian
    • Tuy vậy, nhiều khả năng vẫn có những điểm tương đồng giữa phần lớn các ứng dụng
  • Tò mò liệu việc điều chỉnh kích thước TCP buffer có thực sự đáng giá không
  • Có thắc mắc rằng nếu việc điều chỉnh tham số về giá trị tối ưu là dễ, thì lẽ ra kernel ngay từ đầu đã phải làm như vậy rồi chứ
  • Thật tuyệt khi nó đã phát triển từ lọc gói đơn giản sang truy vết và giám sát
    • Đây là một công cụ tuyệt vời mà hầu hết mọi người nên biết
    • Đã sử dụng nó trong nhiều năm rồi