Nghịch lý: Máy ảo giật lag dù tài nguyên vẫn dư thừa
Có bao giờ bạn rơi vào cảnh “vò đầu bứt tai”: Người dùng kêu ca ứng dụng phản hồi chậm, nhưng check vCenter thì CPU Usage chỉ 15-20%? Thậm chí, bạn càng tăng thêm vCPU thì máy ảo lại càng chạy chậm hơn trước.
Mình từng xử lý một cluster 8 host ESXi chạy SQL Server cho đội sản xuất. Con VM này được cấp hẳn 16 vCPU trên CPU vật lý 24 Core. Dù tài nguyên nhìn qua có vẻ dư dả, nhưng thời gian thực thi query bỗng vọt từ 200ms lên tận 5 giây. Sau khi soi kỹ, mình phát hiện thủ phạm chính là CPU Ready Time (%RDY). Đây là chỉ số mà dân làm hệ thống VMware buộc phải nằm lòng nếu không muốn “ăn hành” oan uổng.
CPU Ready Time là gì?
Hiểu đơn giản, CPU Ready Time là thời gian máy ảo đã sẵn sàng xử lý công việc nhưng phải xếp hàng chờ vì không có CPU vật lý (pCPU) nào rảnh.
Hãy tưởng tượng host ESXi là một quán ăn có 8 bàn. Một nhóm khách 4 người (VM có 4 vCPU) bước vào. Theo cơ chế lập lịch của VMware, quán phải trống đủ 4 bàn cùng lúc thì nhóm này mới được phục vụ. Nếu chỉ trống 3 bàn, nhóm 4 người vẫn phải đứng ngoài cửa đợi. Thời gian đứng đợi đó chính là Ready Time.
Khi bạn cấp quá nhiều vCPU (Oversubscription), bạn đang làm khó bộ lập lịch (CPU Scheduler). Máy ảo càng nhiều vCPU càng khó tìm đủ số core vật lý trống đồng thời. Hệ quả là Ready Time tăng vọt, gây ra hiện tượng giật lag dù tổng tải hệ thống vẫn thấp.
Cách chẩn đoán CPU Ready Time bằng esxtop
Dù vCenter có biểu đồ Performance, nhưng mình luôn tin dùng esxtop. Công cụ này cho số liệu thời gian thực chính xác đến từng miligiây.
Bước 1: Login vào Host ESXi
Bạn hãy bật SSH trên host, sau đó dùng Putty hoặc Terminal để đăng nhập.
Bước 2: Chạy lệnh chẩn đoán
esxtop
Nhấn phím ‘c’ để đảm bảo bạn đang ở bảng theo dõi CPU.
Bước 3: Đọc vị chỉ số %RDY
Hãy nhìn vào cột %RDY. Đây là thước đo sức khỏe quan trọng nhất của VM:
- Dưới 5%: Hệ thống cực kỳ ổn định.
- Từ 5% – 10%: Bắt đầu có dấu hiệu tranh chấp. Bạn sẽ thấy độ trễ nhẹ khi thao tác.
- Trên 10%: Tình trạng báo động. Ứng dụng sẽ bị timeout hoặc treo liên tục.
Mẹo tính nhanh: Nếu bạn xem thông số trong vCenter (tính bằng ms), hãy dùng công thức này để quy đổi ra phần trăm (với chu kỳ mặc định 20.000ms):
(%RDY) = (CPU Ready Value / 20000) * 100
Kinh nghiệm thực tế để triệt tiêu CPU Ready Time
Dưới đây là 4 chiêu mình thường dùng để đưa hệ thống về trạng thái “xanh mượt”.
1. Quy tắc “Right-sizing”: Ít hơn thường lại tốt hơn
Nhiều người có thói quen cấp thừa vCPU cho chắc ăn. Thực tế, đa số Web hoặc App server chỉ cần 2 vCPU là đủ.
Nếu thấy %RDY cao, đừng ngần ngại giảm số vCPU. Mình từng giảm một VM từ 8 vCPU xuống 4 vCPU và kết quả thật bất ngờ: Tốc độ xử lý tăng gấp đôi. Lý do là VM đó không còn phải chờ đợi quá lâu để chiếm dụng 8 core vật lý cùng lúc nữa.
2. Loại bỏ CPU Limit
Nhiều anh em vô tình đặt CPU Limit. Khi VM chạm ngưỡng này, ESXi sẽ cưỡng ép nó dừng lại để chờ, khiến %RDY tăng ảo. Hãy luôn để Limit ở mức Unlimited. Nếu muốn ưu tiên tài nguyên, hãy dùng Shares thay vì Limit.
3. Chỉnh Power Management sang High Performance
Mặc định, các server Dell hay HP thường để chế độ tiết kiệm điện trong BIOS. Điều này làm chậm quá trình “đánh thức” các core CPU.
Bạn nên chuyển Power Management trong cả BIOS và cấu hình ESXi sang High Performance. Thao tác trên ESXi rất nhanh: Vào Host -> Configure -> Hardware -> Power Management -> Edit.
4. Quét nhanh hệ thống bằng PowerCLI
Nếu quản lý hàng trăm VM, bạn không thể check từng con bằng tay. Hãy dùng đoạn script này để lọc ra các máy ảo đang “khát” CPU trong 5 phút qua:
$vms = Get-VM
foreach ($vm in $vms) {
$stat = Get-Stat -Entity $vm -Stat cpu.ready.summation -Realtime -MaxSamples 1
$readyPercent = ($stat.Value / 20000) * 100
if ($readyPercent -gt 5) {
Write-Host "Cảnh báo: VM $($vm.Name) có %RDY = $($readyPercent)%" -ForegroundColor Red
}
}
Lời kết
CPU Ready Time giống như một sát thủ thầm lặng trong hệ thống ảo hóa. Để tránh lỗi này, đừng bao giờ cấp vCPU vượt quá số core vật lý của một Socket (tránh xung đột NUMA node).
Hãy bắt đầu với cấu hình tối thiểu và chỉ tăng thêm khi CPU Usage thực sự chạm ngưỡng 80%. Giám sát thường xuyên chỉ số %RDY sẽ giúp bạn tiết kiệm hàng giờ troubleshooting vô ích. Nếu VM của bạn vẫn lag, hãy mở esxtop lên ngay nhé!

