Giới thiệu Keybench: Công cụ đo hiệu năng có thể lập trình cho các kho lưu trữ Key-Value
Keybench là một công cụ đo hiệu năng mới, có thể lập trình và mở rộng dành riêng cho các kho lưu trữ key-value. Được thiết kế để lấp đầy khoảng trống của các công cụ như sysbench hay HammerDB, Keybench cho phép người dùng viết các bài kiểm tra (workload) bằng ngôn ngữ Lua để đo lường chính xác thông lượng và độ trễ của các engine lưu trữ như RocksDB hay TidesDB.

Giới thiệu Keybench: Công cụ đo hiệu năng có thể lập trình cho các kho lưu trữ Key-Value
Trong lĩnh vực phát triển phần mềm và hệ thống, việc đo lường hiệu năng của các cơ sở dữ liệu là vô cùng quan trọng. Mới đây, một công cụ mới mang tên Keybench đã được giới thiệu như một giải pháp chuyên biệt để đánh giá hiệu suất của các kho lưu trữ key-value (sorted key-value stores).
Keybench ra đời nhằm lấp đầy khoảng trống mà các công cụ phổ biến như sysbench hay HammerDB chưa đáp ứng đầy đủ đối với các engine lưu trữ key-value hiện đại. Đây là một công cụ có thể lập trình (scriptable) và mở rộng (extensible), cho phép các nhà phát triển tùy biến sâu rộng các bài kiểm tra hiệu năng.
Điểm nổi bật của Keybench
Khác với các công cụ benchmark cứng nhắc, Keybench cho phép người dùng viết các bài kiểm tra (workload) bằng ngôn ngữ Lua. Điều này mang lại sự linh hoạt cao trong việc mô phỏng các tình huống thực tế. Công cụ sẽ chạy các script này trên một hoặc nhiều engine lưu trữ, đo thời gian cho từng thao tác và báo cáo chi tiết về thông lượng (throughput) cũng như độ trễ (latency).
Một ưu điểm lớn là cùng một script Lua có thể chạy unchanged trên nhiều engine khác nhau. Điều này đảm bảo rằng sự so sánh hiệu năng phản ánh đúng chất lượng của engine lưu trữ, không bị ảnh hưởng bởi sự khác biệt của công cụ đo lường.
Các chỉ số được đo lường
Keybench cung cấp hai loại tỷ lệ thông lượng và một phân phối độ trễ chi tiết:
- wu/s (Workload units per second): Số đơn vị công việc mỗi giây. Một đơn vị là một lần gọi đến hàm
run()trong script của bạn. Đây là tốc độ của toàn bộ thao tác logic (ví dụ: "xem giỏ hàng" hay "thanh toán"), bất kể nó bao nhiêu thao tác key cơ bản. - ops/s (Primitive operations per second): Số thao tác nguyên thủy mỗi giây. Bao gồm các lệnh
put,get,del,range, hoặcscan. - Độ trễ (Latency): Được ghi nhận cho từng loại thao tác dưới dạng phân phối (histogram) thay vì chỉ lấy giá trị trung bình. Báo cáo sẽ hiển thị các chỉ số p50, p99, p99.9 và giá trị max cho từng thao tác.
Cấu trúc và hoạt động
Keybench được xây dựng với 5 thành phần chính, mỗi thành phần đều có thể thay thế:
- Engine: Quản lý tính song song. Keybench tạo các luồng worker và phân bổ ngân sách thao tác cho chúng.
- Workload: Là một bảng Lua, chứa hàm
load(để nạp dữ liệu thử nghiệm) và hàmrun(để đo lường). - Store: Cung cấp tập hợp các động từ (verbs) thống nhất (
put,get,del, v.v.) để tương tác với bất kỳ engine nào được chọn. - Backend: Là plugin tự đăng ký. Mỗi engine nằm trong thư mục
backends/với đoạn mã xây dựng riêng. - Reporter: Nơi nhận dữ liệu. Có thể là báo cáo dạng console (dễ đọc), TSV (dành cho máy tính/excel), hoặc timeline (theo dõi thời gian thực).
Các engine được hỗ trợ
Hiện tại, Keybench hỗ trợ ba engine chính:
- Skiplist: Một engine skiplist trong bộ nhớ (in-memory), sử dụng làm tham chiếu và được biên dịch mặc định.
- RocksDB: Engine dạng cây LSM phổ biến, hỗ trợ lưu trữ persistent.
- TidesDB: Một engine cây LSM khác, hỗ trợ tính năng giao dịch (transactional).
Cách sử dụng và mở rộng
Để xây dựng Keybench, bạn chỉ cần một trình biên dịch C và pthreads. Lệnh make sẽ tạo ra tệp thực thi với engine skiplist. Để thêm RocksDB hoặc TidesDB, bạn có thể sử dụng các tùy chọn như make ROCKSDB=1 hoặc make TIDESDB=1.
Công cụ này cho phép so sánh hiệu năng giữa các engine thông qua các tham số dòng lệnh, thay đổi số luồng (threads), kích thước lô (batch size), và thời gian chạy. Ngoài ra, Keybench còn cung cấp script plot.py để trực quan hóa kết quả benchmark thành các biểu đồ và đồ thị thông qua các tệp TSV đầu ra.
Đối với các nhà phát triển muốn thêm engine mới, quy trình khá đơn giản: tạo thư mục trong backends/, triển khai bảng kv_backend, và đăng ký nó. Lõi của Keybench không cần phải chỉnh sửa.
Keybench hiện đang ở phiên bản 0.1.0 và là một dự án mã nguồn mở thú vị, đặc biệt hữu ích cho những ai đang làm việc với tối ưu hóa hệ thống lưu trữ dữ liệu.
Bài viết liên quan

Phần mềm
GitLab cắt giảm 14% nhân sự để tái cấu trúc hạ tầng phục vụ AI
03 tháng 6, 2026

Công nghệ
Các tác nhân AI đã khiến thế giới công nghệ chao đảo: Câu chuyện đằng sau cuộc cách mạng Claude Code và OpenClaw
26 tháng 5, 2026

Công nghệ
CEO Palantir: 10% thế giới "ghét chúng tôi một cách chuyên nghiệp"
05 tháng 5, 2026
