CHƯƠNG 19 · Performance Engineering•BÀI 73 / 80

cgroups v2, CPU throttling và p95 latency

Hiểu CPU limit là quota; low average CPU không loại trừ burst throttling.

Vận hành◷ 4 phút đọc1/4 trong chương

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

CPU demand→quota→throttling/latency

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.

TÀI NGUYÊN ĐI KÈM

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
NGUỒN CHÍNH THỨC

Đố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 ↗