Cosbench là một công cụ mã nguồn mở do Intel phát triển, chuyên dùng để đánh giá hiệu năng của các hệ thống lưu trữ đối tượng như S3, Swift, CDMI và các nền tảng tương thích khác. Dưới đây là hướng dẫn triển khai và vận hành Cosbench trên môi trường Linux, kèm theo phân tích cấu hình chi tiết và cách diễn giải kết quả thử nghiệm.
Triển khai Cosbench trên CentOS 7.6
Trước khi cài đặt, đảm bảo hệ thống đã sẵn sàng các phụ thuộc cần thiết:
# Cài đặt JDK và công cụ mạng hỗ trợ
sudo yum install -y java-1.8.0-openjdk nmap-ncat
# Tải phiên bản ổn định (ví dụ: v0.4.2.c4)
wget https://github.com/intel-cloud/cosbench/releases/download/v0.4.2.c4/0.4.2.c4.zip
# Giải nén và điều hướng vào thư mục gốc
unzip 0.4.2.c4.zip && cd 0.4.2.c4
Các tập lệnh khởi động được tổ chức rõ ràng trong thư mục gốc:
start-all.sh: Khởi chạy đồng thời controller và driver trên cùng một nút.start-controller.sh/start-driver.sh: Khởi động riêng lẻ từng thành phần.cli.sh: Giao diện dòng lệnh để gửi và quản lý workload.
Kích hoạt dịch vụ
Để tránh xung đột proxy, loại bỏ biến môi trường trước khi khởi động:
unset http_proxy https_proxy
sh start-all.sh
Sau khi thực thi, hệ thống sẽ khởi tạo hai tiến trình Java độc lập:
- Controller lắng nghe tại cổng
19088(giao diện web) và19089(console). - Driver lắng nghe tại cổng
18088và18089, chịu trách nhiệm thực thi các tác vụ I/O.
Truy cập giao diện quản trị qua trình duyệt tại: http://<IP-máy-chủ>:19088/controller/.
Cấu hình workload mẫu cho S3
Tệp cấu hình XML xác định toàn bộ luồng kiểm thử — từ khởi tạo bucket đến dọn dẹp sau cùng. Ví dụ dưới đây mô tả một kịch bản đọc/ghi cân bằng trên nền tảng S3:
<?xml version="1.0" encoding="UTF-8"?>
<workload name="s3-stress-test" description="S3 throughput and latency benchmark">
<storage type="s3" config="accesskey=AKIAEXAMPLE;secretkey=SECRETKEY;endpoint=https://s3.example.com:8443" />
<workflow>
<workstage name="setup">
<work type="init" workers="1" config="cprefix=cosbench-bench;containers=r(1,3)" />
</workstage>
<workstage name="preload">
<work type="prepare" workers="4" config="cprefix=cosbench-bench;containers=u(1,3);objects=r(1,50);sizes=c(128)KB" />
</workstage>
<workstage name="benchmark">
<work name="io-loop" workers="16" runtime="120">
<operation type="read" ratio="75" config="cprefix=cosbench-bench;containers=u(1,3);objects=u(1,50)" />
<operation type="write" ratio="25" config="cprefix=cosbench-bench;containers=u(1,3);objects=u(51,100);sizes=c(256)KB" />
</work>
</workstage>
<workstage name="teardown">
<work type="cleanup" workers="2" config="cprefix=cosbench-bench;containers=r(1,3);objects=r(1,100)" />
<work type="dispose" workers="1" config="cprefix=cosbench-bench;containers=r(1,3)" />
</workstage>
</workflow>
</workload>
Một số điểm quan trọng trong cấu hình:
cprefix: Tiền tố chung cho tên bucket và object — giúp phân biệt giữa các lần chạy.containers=r(1,3): Tạo 3 bucket có tên lần lượt làcosbench-bench1,cosbench-bench2,cosbench-bench3.objects=u(1,50): Truy cập ngẫu nhiên vào 50 object trong mỗi vòng lặp.workersở giai đoạnpreparevàbenchmarkảnh hưởng trực tiếp đến mức độ tải đồng thời.
Khởi chạy và giám sát thử nghiệm
Có hai phương thức gửi workload:
1. Qua CLI:
./cli.sh submit s3-stress-test.xml
# Output: Accepted with ID: w5
2. Qua giao diện web: Upload tệp XML tại tab Workload → Submit.
Sau khi bắt đầu, trạng thái công việc hiển thị thời gian thực trên bảng điều khiển, bao gồm tiến độ từng giai đoạn và chỉ số hiệu năng tức thì.
Phân tích kết quả thử nghiệm
Kết quả cuối cùng cung cấp các chỉ số then chốt:
| Chỉ số | Ý nghĩa |
|---|---|
Op-Type | Loại thao tác: read/write/delete |
Op-Count | Tổng số yêu cầu hoàn tất |
Avg-ProcTime | Thời gian xử lý trung bình mỗi yêu cầu (ms) — thước đo độ trễ chính |
Throughput | Số thao tác/giây — phản ánh khả năng xử lý song song |
Bandwidth | Tốc độ truyền dữ liệu trung bình (MB/s) |
Succ-Ratio | Tỷ lệ thành công (phần trăm), nên đạt ≥99.9% trong điều kiện ổn định |
So sánh hiệu năng với RADOS
Để xác định điểm nghẽn hệ thống, có thể so sánh kết quả Cosbench với bài kiểm tra tầng lưu trữ cơ sở (RADOS). Ví dụ:
rados -p datapool bench 180 write --no-cleanup --concurrent-ios 128 -b 4M
Nếu thông lượng RADOS cao hơn đáng kể so với Cosbench khi sử dụng cùng backend, điều này gợi ý rằng lớp giao diện (ví dụ: S3 gateway) hoặc cấu hình mạng (ví dụ: giới hạn băng thông Gigabit) đang là nhân tố giới hạn.