Sẵn sàng cho CPU: Kẻ giết người siêu giám sát thầm lặng



Hãy Thử Công Cụ CủA Chúng Tôi Để LoạI Bỏ Các VấN Đề

CPU Ready là thứ mà bạn có thể không quen thuộc. Ở ấn tượng đầu tiên, nó có vẻ là một điều tốt nhưng tiếc là không phải vậy. CPU Ready đã gây khó khăn cho các môi trường ảo lâu hơn những gì chúng ta biết. VMware định nghĩa đây là “Phần trăm thời gian máy ảo đã sẵn sàng, nhưng không thể lên lịch chạy trên CPU vật lý. Thời gian sẵn sàng của CPU phụ thuộc vào số lượng máy ảo trên máy chủ và tải CPU của chúng. ” Hyper-V chỉ mới bắt đầu cung cấp bộ đếm này (Bộ xử lý ảo Hyper-V Hypervisor CPU Thời gian chờ mỗi lần gửi) và các trình giám sát khác có thể vẫn không cung cấp số liệu này.



Để hiểu CPU Ready là gì, chúng ta sẽ cần hiểu cách các hypervisor lập lịch từ CPU ảo (vCPU) sang CPU vật lý (pCPU). Khi cần thời gian vCPU trong máy ảo, (các) vCPU đó cần được lập lịch dựa trên (các) pCPU để các lệnh / quy trình / luồng có thể chạy với pCPU. Trong một thế giới lý tưởng, không có xung đột tài nguyên hoặc tắc nghẽn khi điều này xảy ra. Khi một máy ảo vCPU đơn lẻ cần lên lịch thời gian so với một pCPU, một lõi pCPU sẽ có sẵn và CPU Ready là rất ít trong thế giới lý tưởng này. Điều quan trọng cần lưu ý là CPU Ready luôn tồn tại nhưng trong một thế giới lý tưởng, nó rất tối thiểu và không được chú ý.



Trong thế giới thực, một trong những lợi ích của ảo hóa là bạn có thể đặt cược rằng nhiều máy ảo của bạn sẽ không tăng đột biến tất cả vCPU của chúng cùng một lúc và nếu chúng là những máy ảo sử dụng rất thấp, bạn thậm chí có thể đoán xem bạn có thể tải lên máy chủ vật lý của bạn dựa trên mức sử dụng CPU và mức sử dụng RAM. Trước đây, các khuyến nghị để có tỷ lệ 4 vCPU đến 1 pCPU hoặc thậm chí 10: 1 tùy thuộc vào khối lượng công việc đã được đưa ra. Ví dụ: bạn có thể có một bộ xử lý lõi tứ nhưng có 4 máy ảo với vCPU, mỗi máy ảo cung cấp cho bạn 16 vCPU đến 4 pCPU hoặc 4: 1. Tuy nhiên, điều mà các kỹ sư bắt đầu nhận thấy là các môi trường hoạt động rất chậm và họ không thể tìm ra lý do tại sao. Việc sử dụng RAM có vẻ ổn, mức sử dụng CPU trên các máy chủ vật lý thậm chí có thể rất thấp, dưới 20%. Độ trễ lưu trữ cực kỳ thấp, nhưng các máy ảo lại cực kỳ chậm chạp.



Điều gì đã xảy ra trong trường hợp này là CPU Sẵn sàng. Đã có một hàng đợi xây dựng vCPU sẵn sàng được lên lịch nhưng không có pCPU nào có sẵn để lên lịch. Hypervisor sẽ làm ngưng trệ việc lập lịch và gây ra độ trễ cho máy ảo khách. Nó là một kẻ giết người thầm lặng mà cho đến những năm gần đây, không có nhiều công cụ để phát hiện. Trong máy ảo Windows, sẽ mất vĩnh viễn để khởi động và cuối cùng khi nó khởi động, khi bạn nhấp vào menu bắt đầu, nó sẽ mất vĩnh viễn để hiển thị. Bạn thậm chí có thể nhấp lại vào nó khi nghĩ rằng nó không chấp nhận lần nhấp đầu tiên của bạn và khi cuối cùng nó bắt kịp, bạn sẽ nhận được một cú nhấp đúp. Trên linux, máy ảo của bạn có thể khởi động ở chế độ chỉ đọc hoặc thậm chí chuyển hệ thống tệp sang chế độ chỉ đọc vào một thời điểm nào đó sau đó.

Vậy làm cách nào để chống lại CPU Ready? Có một số cách có thể hữu ích. Đầu tiên là theo dõi các chỉ số Sẵn sàng của CPU. Trong VMware, không nên vượt quá 10% nhưng theo kinh nghiệm cá nhân, người dùng bắt đầu nhận thấy trên 5-7% tùy thuộc vào loại VM và những gì nó đang chạy.

Dưới đây tôi sẽ sử dụng một số ví dụ từ VMware ESXi 5.5 để hiển thị CPU Ready. Sử dụng dòng lệnh, chạy “esxtop”. Nhấn “c” để xem CPU và bạn sẽ thấy cột “ % RDY ”Cho CPU Sẵn sàng. Bạn có thể nhấn vốn “ V ”Cho chế độ xem Chỉ VM.



cpu-ready-1

Ở đây bạn có thể thấy rằng% RDY hơi cao đối với một môi trường khá không được sử dụng. Trong trường hợp này, ESXi 5.5 của tôi đang chạy một máy ảo thử nghiệm trên VMware Fusion (Mac hypervisor), vì vậy nó được mong đợi là hơi cao cấp vì chúng tôi đang chạy một máy ảo trên một hypervisor trên một hypervisor khác.

Trong ứng dụng khách vSphere, bạn có thể kéo máy ảo cụ thể lên và nhấp vào tab Hiệu suất. Từ đó nhấp vào “Tùy chọn biểu đồ”

cpu-ready-2

Trong Tùy chọn biểu đồ, chọn CPU, Thời gian thực (nếu bạn có vCenter, bạn có thể có các tùy chọn thời gian khác với thời gian thực). Từ đó trong Bộ đếm, chọn “Sẵn sàng”. Bạn có thể cần bỏ chọn một bộ đếm khác vì chế độ xem chỉ cho phép hai loại dữ liệu tại bất kỳ thời điểm nào.

cpu-ready-3

Bạn sẽ lưu ý rằng giá trị này là tổng hợp của sẵn sàng so với tỷ lệ phần trăm. Đây là một liên kết đến một bài viết VMware KB về cách chuyển đổi các số liệu tóm tắt thành phần trăm. - https://kb.vmware.com/kb/2002181

Khi mua phần cứng, nhiều lõi hơn sẽ giúp giảm tác động của CPU Ready. Siêu phân luồng cũng giúp ích. Mặc dù Siêu phân luồng không cung cấp đầy đủ lõi thứ hai cho mỗi lõi chính, nhưng nó thường đủ để cho phép lập lịch vCPU thành pCPU và giúp giảm thiểu sự cố. Mặc dù người giám sát đang bắt đầu chuyển từ đề xuất tỷ lệ vCPU sang pCPU, bạn thường có thể làm tốt trên môi trường được sử dụng vừa phải với tỷ lệ 4: 1 và bắt đầu từ đó. Khi bạn bắt đầu tải máy ảo, hãy xem độ trễ của CPU, Mức độ sẵn sàng của CPU cũng như cảm giác và hiệu suất tổng thể. Nếu bạn có một số máy ảo bị ảnh hưởng nặng nề, bạn có thể muốn tách chúng thành các cụm khác và sử dụng tỷ lệ thấp hơn và giữ chúng nhẹ. Mặt khác, đối với các máy ảo mà hiệu suất không phải là yếu tố then chốt và chúng có thể chạy chậm, bạn có thể đăng ký quá mức cao hơn nhiều.

Định kích thước phù hợp cho các máy ảo cũng là một công cụ rất lớn để chống lại sự Sẵn sàng của CPU. Nhiều nhà cung cấp đề xuất các thông số kỹ thuật hơn những gì máy ảo có thể thực sự cần. Theo truyền thống, nhiều CPU hơn và nhiều lõi hơn = nhiều năng lượng hơn. Vấn đề trong môi trường ảo là hypervisor phải lên lịch cho tất cả các vCPU thành pCPU gần như cùng một lúc và việc khóa các pCPU có thể có vấn đề. Nếu bạn có máy ảo 8 vCPU, bạn phải khóa 8 pCPU để cho phép chúng lên lịch cùng một lúc. Nếu máy ảo vCPU của bạn chỉ sử dụng 10% tổng số vCPU tại bất kỳ thời điểm nào, bạn nên giảm số vCPU xuống 2 hoặc 4. Tốt hơn là chạy máy ảo ở 50-80% CPU với ít vCPU hơn 10% tại nhiều vCPU hơn. Vấn đề này một phần là do bộ lập lịch CPU của hệ điều hành được thiết kế để sử dụng càng nhiều lõi càng tốt, trong khi nếu nó được đào tạo để sử dụng tối đa số lõi trước khi sử dụng nhiều hơn, thì nó có thể ít gặp vấn đề hơn. Một máy ảo quá khổ có thể hoạt động tốt nhưng có thể là “hàng xóm ồn ào” đối với các máy ảo khác, vì vậy đây thường là một quá trình mà bạn phải đi qua tất cả các máy ảo trong cụm để “đúng kích thước” chúng để thấy một số hiệu suất tăng.

Nhiều khi bạn gặp tình trạng CPU Ready và rất khó để khởi động máy ảo đúng kích thước hoặc nâng cấp lên bộ xử lý có nhiều lõi hơn. Nếu bạn đang ở trong trường hợp này, việc thêm nhiều máy chủ hơn trong cụm của bạn có thể hỗ trợ việc này để phân tán tải trên nhiều máy chủ hơn. Nếu bạn có các máy chủ có nhiều lõi / bộ xử lý hơn những máy khác, việc gắn các máy ảo vCPU cao vào các máy chủ lõi cao hơn này cũng có thể hữu ích. Bạn muốn đảm bảo máy chủ vật lý của mình có ít nhất cùng số lõi nếu không nhiều hơn VM, nếu không sẽ rất chậm / khó lên lịch vượt quá vCPU thành pCPU vì chúng cần được khóa gần như cùng một lúc .

Cuối cùng, người giám sát của bạn có thể hỗ trợ đặt chỗ và giới hạn trên VM. Đôi khi các chủ đề được đặt ra một cách vô tình. Các cài đặt tích cực trên những thứ này có thể khiến CPU sẵn sàng trong khi thực tế là các tài nguyên cơ bản có sẵn cho nó. Tốt nhất nên sử dụng đặt trước và giới hạn một cách tiết kiệm và chỉ khi thực sự cần thiết. Đối với hầu hết các phần, một cụm có kích thước phù hợp sẽ cân bằng các tài nguyên một cách thích hợp và chúng thường không cần thiết.

Tóm lại, cách bảo vệ tốt nhất chống lại CPU Ready là biết rằng nó tồn tại và cách kiểm tra nó. Sau đó, bạn có thể xác định một cách có hệ thống các bước giảm thiểu tốt nhất cho môi trường của bạn như đã nêu ở trên. Đối với hầu hết các phần, thông tin trong bài viết này áp dụng chung cho bất kỳ trình siêu giám sát nào, mặc dù ảnh chụp màn hình và biểu đồ áp dụng riêng cho VMware.

5 phút đọc