vCPU hay virtual Central Processing Unit là đơn vị xử lý trong virtualization environment, đại diện cho một phần sức mạnh của Physical CPU được cấp phát cho Virtual Machine hoặc container.
Trong DevOps và SRE, vCPU là đơn vị cơ bản để tính toán năng lực xử lý cho capacity planning và chi phí hạ tầng trên cloud. Hiểu đúng về vCPU giúp bạn chọn đúng loại instance, tránh lãng phí tiền bạc hoặc gặp vấn đề về performance do thiếu tài nguyên.
Ví dụ: Trên AWS hoặc Google Cloud, 1 vCPU thường tương ứng với 1 thread của một Physical Core có bật Hyperthreading.
vCPU không phải lúc nào cũng bằng 1 Physical Core. Nó phụ thuộc vào tỷ lệ quy đổi của nhà cung cấp và cấu hình phần cứng bên dưới.
vCPU cho biết điều gì?
vCPU giúp bạn ước lượng khả năng xử lý song song và tính toán của hệ thống:
- Ứng dụng có thể xử lý bao nhiêu luồng đồng thời hay concurrency?
- Hệ thống có đủ tài nguyên để gánh workload CPU bound hay không?
- Chi phí vận hành hàng tháng là bao nhiêu vì giá cloud thường tính theo vCPU mỗi giờ?
Tuy nhiên, cần lưu ý: performance của 1 vCPU có thể thay đổi tùy thuộc vào thế hệ chip, tốc độ xung nhịp hay clock speed và trạng thái của các Virtual Machine lân cận.
vCPU khác Physical Core ra sao?
Đây là điểm dễ gây nhầm lẫn nhất khi sizing hệ thống:
- Physical Core: là một nhân xử lý vật lý thực tế trên chip.
- vCPU: thường là một luồng xử lý hay thread.
Với công nghệ Hyperthreading của Intel hoặc SMT của AMD, 1 Physical Core thường tách thành 2 luồng xử lý. Do đó, công thức phổ biến trên cloud là:
1 Physical Core = 2 vCPU
Điều này có nghĩa là 2 vCPU không mạnh bằng 2 Physical Core thực sự, vì chúng chia sẻ chung bộ nhớ đệm hay cache và đơn vị tính toán của nhân vật lý.
CPU Steal và Noisy Neighbor
Trong virtualization environment, nhiều Virtual Machine cùng chia sẻ một Physical CPU. Hypervisor sẽ chịu trách nhiệm phân chia CPU time bằng kỹ thuật time slicing cho các Virtual Machine.
- Nếu Virtual Machine của bạn cần CPU nhưng Hypervisor đang bận phục vụ Virtual Machine khác, bạn sẽ bị chờ. Thời gian chờ này gọi là CPU Steal.
- Nếu CPU Steal cao, ứng dụng sẽ bị chậm, giật lag dù metrics nội bộ như user CPU trông vẫn thấp.
Gợi ý thực tế: luôn theo dõi metric CPU Steal trên Linux như chỉ số st trong lệnh top để phát hiện vấn đề noisy neighbor.
Burstable vCPU và Performance
Không phải vCPU nào cũng chạy được 100% công suất liên tục. Các dòng instance giá rẻ như T3 của AWS hay e2-micro của GCP sử dụng cơ chế Burstable vCPU:
- Bạn được cấp một mức baseline performance thấp ví dụ 10% hoặc 20%.
- Khi không dùng hết, bạn tích lũy CPU credits.
- Khi cần tải cao, bạn tiêu dùng credits để burst lên 100%.
Ví dụ:
- Một database dùng dòng burstable có thể chạy rất nhanh lúc đầu, nhưng sau vài giờ tải cao sẽ bị bóp nghẹt hiệu năng hay throttled vì hết credits.
Những yếu tố làm vCPU monitoring bị sai
Việc giám sát vCPU cần cẩn trọng với các chỉ số sau:
- CPU usage %: 100% vCPU usage có thể là tốt nếu tận dụng hết tài nguyên hoặc xấu nếu bị saturation, cần xem thêm Load Average và Latency.
- Container limit: Trong Kubernetes, nếu bạn set limit là 500m tương đương 0.5 vCPU, container sẽ bị throttled cứng theo cơ chế CFS Throttling ngay khi chạm ngưỡng, gây latency cao cho request dù CPU usage trung bình thấp.
- Context Switching: Quá nhiều vCPU cho một ứng dụng không tận dụng được đa luồng có thể làm giảm hiệu năng do context switch overhead tăng cao.
vCPU được dùng để làm gì trong DevOps?
Quản lý vCPU tốt giúp bạn:
- Right sizing: Chọn đúng kích cỡ instance để tối ưu chi phí hay cost optimization.
- Performance tuning: Cấu hình thread pool của ứng dụng như Node.js worker hay Go GOMAXPROCS khớp với số lượng vCPU thực tế.
- Kubernetes scheduling: Thiết lập requests và limits chính xác để scheduler xếp pod vào node hợp lý.
Checklist vCPU cho production
- Đã xác định workload là CPU bound hay IO bound để chọn tỷ lệ vCPU trên RAM phù hợp chưa?
- Đã kiểm tra dòng instance là loại standard hay burstable chưa?
- Nếu dùng burstable, đã có monitoring cho CPU credits chưa?
- Đã thiết lập alert cho CPU Steal để phát hiện noisy neighbor chưa?
- Trong Kubernetes, đã kiểm tra metric
container_cpu_cfs_throttled_secondsđể tránh throttle chưa?
Kết luận
vCPU là đơn vị đo lường sức mạnh tính toán cơ bản trên cloud. Nó thường tương đương với một thread của Physical Core chứ không phải một nhân trọn vẹn.
Để vận hành ổn định, bạn cần hiểu rõ sự khác biệt giữa vCPU và Physical Core, tránh dùng dòng burstable cho các workload cần performance ổn định, và luôn giám sát CPU Steal để đảm bảo không bị ảnh hưởng bởi các Virtual Machine khác trên cùng hạ tầng.







