Logo

Personal Ops Runbook

Personal runbook covering infrastructure operations for Cloud, Kubernetes, OpenStack, and Ceph environments. Includes deployment and teardown procedures, node management, cluster monitoring setup, and incident response workflows compiled from day-to-day operational work. Intended strictly for personal reference — configurations and scripts are environment-specific and not guaranteed to work as-is elsewhere.

GreenNode × Lightbits PoV — BÁO CÁO BENCHMARK TỔNG HỢP

Báo cáo gộp 2 lần đo:
- Run 1 (23–24/06/2026, 1 client, baseline PoV 4.1 + max-bench) - Run 2 (29/06/2026, 3 client × 6 volume = 18 volume, 300s/test)

Cluster info: - 3× storage node (oss-nvme-01/02/03) - LightOS 3.18.2 - Mỗi node 6 NVMe data EC 4+2 + 2 journal (Samsung PM9A3 15,36TB) - AMD EPYC 9554P 64c/128t - Network bond0 2×100GbE (LACP, layer3+4, MTU 9000, single-NUMA)

Client: - Run 1: oss-nvme-04 - Run2: oss-nvme-04+05+06 - Tất cả client phần cứng, cấu hình giống như server


1. Executive Summary

Tiêu chí PoV Mục tiêu Kết quả tốt nhất Verdict
4K Random Read IOPS (aggregate) > 4,0M 5,44M (3 client) PASS — vượt 36%
4K QD1 Read latency < 0,2 ms 0,198 ms (Run 1) / 0,201 ms (Run 2) ⚠️ Đúng ngưỡng — dao động ±2µs quanh mốc
Aggregate Sequential Read > 60 GB/s 27,49 GB/s (3 client) FAIL — kẹt trần ~66 Gbps/node
CPU overhead phía client < 15% ~0,4% avg / 6,9% peak (softirq, Run 2) ✅ PASS
No IO disruption khi reboot 1 node chưa chạy ⬜ Còn lại (mục 4.4)
FIO baseline 4.1.1/4.1.2/4.1.3 đầy đủ 18/18 bài × 610s ✅ Hoàn thành

Ghi nhận 3 vấn đề: 1. IOPS rất tốt — 5,44M IOPS 4K read (vượt target 36%) với latency 0,84ms avg / 2,18ms p99; đây là chỉ số quan trọng nhất cho workload database. 2. Sequential read bị limit chưa giải thích được ở ~66 Gbps/node egress — 1 client kéo 24,69 GB/s (~99% line-rate 200GbE của client), nhưng 3 client chỉ ra 27,49 GB/s (+11%). Mọi nghi phạm client-side/network/config đã loại trừ; khả năng cao limit nằm trong data-path mỗi storage node trong khi node còn ~42% CPU idle và ~65% NIC rảnh. 3. Write ở concurrency cao sụt vì GC trên ổ read-intensive — PM9A3 ~1 DWPD không phải ổ mạnh về write; hiện tượng khớp Grafana (GC BW ≈ Write BW, journal latency 60–90ms). Docs Lightbits khuyến nghị journal dùng ổ write-intensive (DWPD × size × số ổ > 80TB) — cấu hình lab chưa đạt chuẩn này.


2. Môi trường & phương pháp

Hạng mục PoV tham chiếu (3.1) Lab Ghi chú
Storage node 3 3 trùng
NVMe data/node 6 6 (+2 journal) trùng
CPU/node AMD 64 core EPYC 9554P 64c/128t trùng
Network/node 2×100GbE = 200Gbps bond0 200Gbps trùng
EC enabled 4+2 trùng
LightOS 3.15.3→3.18.1 3.18.2 tương đương
Client tạo tải nhiều 1 (Run 1) / 3 (Run 2) khác biệt chính giữa 2 run
SSD không nêu PM9A3 read-intensive ~1 DWPD ảnh hưởng write GC

Benchmark: fio libaio, direct=1, numjobs=8/job-file, runtime 600s+10s ramp (Run 1 baseline), 300s (Run 2); IOPS/BW cộng từ JSON per-volume; latency = clat.


3. Kết quả Run 1 — 1 client (baseline PoV 4.1)

4KB Random (nj8)

Test IOPS BW MB/s avg ms p99 ms CPU%
QD1 RandRead 38,9k 159 0,198 0,239 4,8
QD4 RandRead 144,9k 594 0,214 0,289 16,4
QD1 RandWrite 43,1k 177 0,177 0,247 5,7
QD4 RandWrite 142,1k 582 0,218 0,350 16,8
QD1 70/30 27,7k R + 11,9k W 162 R 0,200 / W 0,180 R 0,251 / W 0,222 5,1
QD4 70/30 101,4k R + 43,4k W 593 R 0,221 / W 0,196 R 0,322 / W 0,281 16,8

8KB Random (nj8)

Test IOPS BW MB/s avg ms p99 ms CPU%
QD1 RandRead 34,8k 285 0,222 0,272 4,5
QD4 RandRead 99,3k 814 0,315 0,457 11,8
QD1 RandWrite 31,6k 259 0,245 0,313 4,0
QD4 RandWrite 98,3k 806 0,318 0,477 10,4
QD1 70/30 19,2k R + 8,2k W 225 R 0,299 / W 0,247 R 0,391 / W 0,297 3,5
QD4 70/30 68,8k R + 29,5k W 805 R 0,336 / W 0,278 R 0,514 / W 0,367 11,2

1MB Sequential (nj8)

Test IOPS BW MB/s avg ms p99 ms CPU%
QD1 Read 5,4k 5.683 1,427 2,073 3,5
QD4 Read 7,3k 7.639 4,339 6,455 3,9
QD1 Write 3,5k 3.697 2,217 4,751 2,4
QD4 Write 3,8k 3.979 8,395 10,945 1,9
QD1 50/50 2,1k+2,1k 4.506 R 1,836 / W 1,786 R 2,834 / W 3,064 2,8
QD4 50/50 3,6k+3,6k 7.585 R 3,385 / W 5,379 R 6,062 / W 16,712 3,0

Nhận xét: latency 4K/8K ổn định 0,18–0,48ms, p99 <0,5ms; write sạch ở QD thấp (chưa chạm GC); CPU% là tổng tiến trình fio (gồm phần sinh tải) — overhead storage thuần thấp hơn.

Max-bench 1 client (trần một client, ngoài bảng PoV)

Chỉ số Kết quả
4K RandRead 1,64M IOPS
8K RandRead 1,80M IOPS
1M SeqRead 24,73 GB/s ≈ 99% line-rate 200GbE
4K RandWrite 1,36M IOPS (chưa dính GC)
8K RandWrite (conc. cao) 0,25M IOPS, p99 969ms, swing ×453 — GC
1M SeqWrite (conc. cao) 6k IOPS, p50 137ms, p99 1.200ms — GC

Xuất hiện GC trên Grafana:

1. GC BW ≈ Total Write BW — băng thông GC ngang bằng băng thông ghi của client. Nghĩa là cứ mỗi GB client ghi vào, hệ thống phải ghi thêm ~1GB nữa chỉ để dọn nhà (di chuyển dữ liệu còn sống ra khỏi các block sắp xóa). Disk đang làm việc gấp đôi — một nửa cho khách, một nửa cho việc nội bộ.

2. WA ~100% — Write amplification phản ánh lượng ghi thật xuống NAND ≈ gấp đôi lượng client gửi.

3. Journal latency 60–90ms — cho kết quả mỗi op write vào phải xếp hàng sau đám IO GC trên cùng bộ đĩa → latency write của client vọt lên.

4. CPU/mem/read-congestion ~0% — cho biết CPU không nghẽn, RAM không thiếu, đọc không tắc. Tức không còn nghi phạm nào khác — chậm không phải do thiếu tài nguyên, mà do đĩa bận dọn rác.

Ghép lại cho thấy disk đang ghi gấp đôi (1+2), khiến journal nghẽn (3) và không gì khác có lỗi (4) → GC là thủ phạm duy nhất. Có thể PM9A3 là disk read-intensive (~1 DWPD) — over-provisioning thấp, GC yếu bẩm sinh khi bị dội write dồn dập ở concurrency cao.


4. Kết quả Run 2 — 3 client × 18 volume

Bài test Cấu hình Throughput IOPS avg p99
SeqRead 1 client nj8/qd64 24,69 GB/s 128,4 ms 350,2 ms
SeqRead 3 client QD thấp nj2/qd16 27,70 GB/s 21,8 ms 50,1 ms
SeqRead 3 client QD cao nj4/qd32 27,49 GB/s 87,8 ms 329,3 ms
4K RandRead 3 client nj8/qd32 22,26 GB/s 5,44M 0,840 ms 2,179 ms
4K QD1 latency floor nj1/qd1 0,201 ms 0,239 ms

Phát hiện trọng tâm: trần ~66 Gbps/node

Trạng thái storage node lúc full-load sequential:

Node Core 100% Core 70–95% CPU idle %soft TX %NIC
oss-nvme-01 16 35 ~42% ~6% 66 Gbps ~33%
oss-nvme-02 16 35 ~42% ~6% 64 Gbps ~32%
oss-nvme-03 16 38 ~42% ~6% 68 Gbps ~34%

Mỗi node đứng im ở ~66 Gbps egress dù còn ~42% CPU idle, ~65% NIC rảnh, disk dư. Tăng QD ×4 (192→768 IO/client): throughput bất động (27,70→27,49), latency tăng tuyến tính (21,8→87,8ms) — loại giả thuyết thiếu QD.

Nghi phạm đã loại trừ

  • NUMA (single node0, NIC cùng node)
  • Version (3.18.2)
  • Bond/LACP (802.3ad cả 2 link), hash layer3+4 (TX trải đều), MTU 9000 hai đầu
  • Queue depth (×4 không đổi)
  • Client/NIC (1 client kéo ~198Gbps)
  • CPU storage (idle 42%, %soft ~1,5%)

Nghi phạm còn lại:
Giới hạn nội tại data-path duroslight per-node ở pattern sequential read — phân bổ core theo module (reader cores cố định trong system profile), pinning/shard-to-connection mapping hoặc tuning NVMe/TCP target. 16 core chạy 100% trong khi tổng CPU idle 42% gợi ý một nhóm shard cố định bão hòa chứ không phải thiếu CPU tổng.


5. So sánh chéo hai run & tính nhất quán

Chỉ số Run 1 (1 client) Run 2 (3 client)
SeqRead tổng 24,73 GB/s 27,49 GB/s +11% dù ×3 client → trần server-side
4K RandRead 1,64M 5,44M scale ~3,3× — random scale đẹp, sequential không
QD1 latency 0,198 ms 0,201 ms ngưỡng ổn ở 0,2ms
Kỳ vọng 3 client sẽ đạt 60 GB/s dự đoán ✅ thực tế ❌ Nghi vấn giới hạn nội tại data-path per-node

Điểm nhất quán đáng tin: hai bài test độc lập, cách nhau 5 ngày, cho cùng floor latency và cùng trần sequential (~24,7 vs ~27,5) → số liệu ổn định.