cgroups v2, CPU throttling và p95 latency
Hiểu CPU limit là quota; low average CPU không loại trừ burst throttling.
Nắm bản chất
Trong cgroups v2, cpu.max đặt quota/period;
cpu.stat theo dõi usage/throttled periods. Kubernetes CPU requests
ảnh hưởng scheduling và HPA utilization denominator, limits ảnh hưởng CPU quota.
Một ứng dụng CPU-bound có thể tăng latency khi bị throttle.
Tăng CPU limit chỉ có ích nếu bottleneck thực sự là CPU/quota và node có capacity. Với service đang chờ database, network hoặc I/O, tăng CPU có thể không cải thiện latency. Theo dõi request rate, errors, p95 và saturation cùng một lúc.
Luồng hoạt động
Hãy tự giải thích mỗi mũi tên: dữ liệu, quyền hoặc tín hiệu nào được truyền qua bước này?
Lệnh & cấu hình mẫu
kubectl -n perf19 exec deploy/perf19-api -- cat /sys/fs/cgroup/cpu.max
kubectl -n perf19 exec deploy/perf19-api -- cat /sys/fs/cgroup/cpu.stat
kubectl -n perf19 top pods
Lệnh có placeholder hoặc phụ thuộc môi trường thì cần thay thông tin thực tế, kiểm tra quyền và chỉ thực hiện trên tài nguyên được phép.
Bài tập 10–20 phút
Chạy CPU endpoint và k6 lab Buổi 19, so sánh nr_throttled/p95
trước và sau khi tăng CPU limit trên Deployment lab.
Lỗi dễ mắc
Không đọc throttled periods / periods như phần trăm latency bị
mất; đó là các phép đo khác nhau.
Tự kiểm tra
CPU limit 250m và CPU request 100m có nghĩa CPU utilization HPA tính theo giới hạn 250m?Xem đáp án ↗
Không. HPA CPU averageUtilization thường dựa trên CPU requests 100m.
Học thêm qua lab
Có project thực hành đúng với chương này, kèm README và những giới hạn môi trường cần lưu ý.
↓ Tải mã nguồn thực hành chương 19Đối chiếu tài liệu gốc
Cú pháp và khả năng hỗ trợ có thể thay đổi theo phiên bản. Trước khi dùng Production, hãy kiểm tra tài liệu tương ứng.
Mở tài liệu chính thức ↗