CHƯƠNG 02 · Linux bên trong Container•BÀI 06 / 80

cgroups v2: kiểm soát CPU và memory

Đọc các giới hạn do kernel thực thi.

Nền tảng◷ 4 phút đọc2/4 trong chương

Nắm bản chất

Cgroups quản lý tài nguyên theo nhóm tiến trình. Trên cgroups v2, cpu.max thể hiện quota/period, cpu.stat ghi usage và throttling; memory.max, memory.current và memory.events giúp phân tích giới hạn và OOM.

CPU limits thường được thực thi bằng bandwidth throttling; memory limits có thể dẫn đến reclaim và OOM kill. Giới hạn không bảo đảm performance: nếu host quá tải hoặc ứng dụng chờ I/O, container vẫn có thể chậm khi CPU usage thấp.

Luồng hoạt động

Requests / limits→cgroup→scheduler/OOM

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

docker run --rm --cpus=0.5 --memory=128m alpine:3.20   sh -c 'cat /sys/fs/cgroup/cpu.max; cat /sys/fs/cgroup/memory.max'
docker stats --no-stream

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 hai containers tính toán với CPU limits khác nhau; đo wall time và cpu.stat trong môi trường Linux/cgroups v2 tương thích.

Lỗi dễ mắc

!

Không suy ra Exit 137 chắc chắn do OOM. Phải đối chiếu OOMKilled, kernel/cgroup events và hoàn cảnh kill process.

Tự kiểm tra

CPU request và CPU limit có chức năng giống nhau không?Xem đáp án ↗

Không. Requests phục vụ scheduling/resource weighting; limits có thể áp đặt quota cứng gây throttling.

TÀI NGUYÊN ĐI KÈM

Học thêm qua lab

Bài học nền tảng có thể thực hiện trực tiếp bằng các lệnh trên; bảng tra cứu nhanh giúp ôn tập.

→ Mở bảng lệnh tra cứu nhanh
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 ↗