Thực hành tốt nhất: vCPUs trên mỗi lõi vật lý


27

Tôi đang cố gắng tìm một số tài liệu hoặc hướng dẫn thực hành tốt nhất cho ảo hóa liên quan đến việc cung cấp vCPUs cho mỗi lõi vật lý (của CPU). Nếu nó quan trọng, tôi đang xem vmWare để thực hiện ảo hóa. Ví dụ, CPU Intel Xeon có thể có lõi 4, 8, v.v. Tôi quan tâm đến việc tìm hiểu thêm về việc cung cấp ngoài chỉ một vCPU cho mỗi lõi vật lý. Nhà cung cấp mà tôi đang nói chuyện chắc chắn nghĩ rằng một lõi đơn có thể được cung cấp vào nhiều vCPU.

Những gì tôi thường thấy trong nghiên cứu của tôi cho đến nay là, "Chà, nó phụ thuộc vào ứng dụng của bạn." Và trong trường hợp đó, ứng dụng của tôi là chỉnh sửa mã, biên dịch / liên kết, kiểm tra và quản lý cấu hình. Tất nhiên, không phải tất cả các VM cần được cấu hình với nhiều vCPU cho mỗi lõi, nhưng trong trường hợp chung.

Câu trả lời:


24

Một CPU vật lý đơn lẻ có thể được sử dụng như nhiều vCPU. Bạn hiếm khi hết tài nguyên CPU trong các giải pháp ảo hóa. RAM và lưu trữ luôn là yếu tố hạn chế ...

Hãy nhớ rằng, trong VMware, việc sử dụng CPU được biểu thị bằng MHz được sử dụng, không phải lõi ... Trừ khi bạn chốt tất cả các CPU ảo của mình ở mức 100% TẤT CẢ THỜI GIAN , tôi không nghĩ nhà cung cấp của bạn là chính xác.

Hãy nhìn vào cụm hệ thống sau đây ...

  • 9 máy chủ ESXi.
  • 160 máy ảo
  • 104 lõi CPU vật lý trên toàn cụm.
  • Cấu hình máy ảo trung bình là: 4 vCPU và RAM 4GB đến 18GB.
  • CPU có thể được đăng ký một cách an toàn ... nhưng hãy nhớ rằng, nó cũng có thể bị giới hạn, dành riêng và ưu tiên ở cấp VM.

nhập mô tả hình ảnh ở đây nhập mô tả hình ảnh ở đây

từ một cụm hoạt động khác - 3 máy chủ 42 máy ảo nhập mô tả hình ảnh ở đây


4
Sau khi thấy 3936 vMotion di chuyển, tôi không cảm thấy quá tệ về 1.200 của chúng tôi
Mark Henderson

2
Tôi đã xem xét các số liệu thống kê trên cụm VM của chúng tôi ngày hôm qua, đưa ra số liệu được đưa ra bởi @ewwhite. Chúng tôi có 3 máy chủ, tổng cộng 24 bộ xử lý và 55 GHz. Chúng tôi có 59 máy ảo với tổng số 79 vCPU được phân bổ. Theo thống kê của vSphere, trong 6 tháng qua, chúng tôi đã tính trung bình một chút trên 14 GHz được sử dụng (tối thiểu 9 GHz, tối đa 25 GHz) và trong thời gian đó, có 0 Sự cố về số lượng lõi CPU.
Paul Gear

7

Để mở rộng trên phần ghi của ewwhite, trừ khi bạn có các ứng dụng có thể tận dụng rõ ràng nhiều vCPU hoặc nhiều lõi cho mỗi vCPU, thì việc phân bổ nhiều vCPU / lõi cho VM là hoàn toàn không có lợi ích gì. Trên thực tế, thường thì bạn sẽ thực sự có hiệu suất thấp hơn so với việc chạy trên một vCPU duy nhất có một lõi được gán cho nó, một phần là do chi phí lập lịch cần thiết để chạy nhiều vCPU.

FWIW, trong cài đặt VDI, số thường được trích dẫn là 5 vCPUs cho mỗi lõi vật lý. Tất nhiên đó là tính đến máy tính để bàn làm việc văn phòng. Nếu máy ảo của bạn thực sự bận rộn với việc biên dịch mã mọi lúc, bạn có thể không phù hợp với 5 vCPU cho mỗi lõi vật lý.

Lý do tại sao rất nhiều người nói rằng "nó phụ thuộc" là bởi vì nó thực sự làm. Nhìn vào các giá trị CPU Ready của bạn và sau đó quyết định xem bạn có thể đặt thêm tải CPU cho một hệ thống cụ thể không. CPU Ready là phép đo vCPU sẵn sàng thực thi lệnh nhưng phải chờ thời gian CPU vật lý sẵn sàng.

Trong trường hợp của bạn, nếu bạn đang biên dịch các chương trình lớn, hoàn toàn có khả năng máy ảo của bạn sẽ thực sự cần rất nhiều thời gian của CPU. Như ewwhite đã lưu ý, thông thường ảo hóa có xu hướng bị I / O và RAM bị hạn chế thay vì CPU bị hạn chế.


13
absolutely zero benefit in allocating multiple vCPUs/cores to a VM- không hoàn toàn chính xác. Chúng tôi có một ứng dụng đơn luồng được sử dụng để treo hàng tuần. Khi một vCPU duy nhất ở mức 100%, không thể truy cập vào hệ thống đó và chúng tôi phải thực hiện thiết lập lại mức độ ảo hóa của VM. Chúng tôi đã thêm một vCPU thứ 2 và khi ứng dụng bị treo, chúng tôi có thể dễ dàng xâm nhập và tiêu diệt chuỗi vi phạm. Đây là một chút của một trường hợp cạnh đúng, nhưng bạn không bao giờ có thể giải quyết tuyệt đối.
Mark Henderson

4
Những gì Mark viết là lý do tại sao chúng tôi sử dụng hai lõi làm giới hạn thấp hơn cho mọi VM - không quan trọng là họ có cần hay không.
Nils

2
Giá trị sẵn sàng là cách tốt nhất để biết nếu bạn cung cấp quá mức cho máy chủ của mình, giá trị sẵn sàng của bạn phải càng thấp càng tốt. Đó là% thời gian VM "sẵn sàng" để sử dụng chu kỳ CPU, nhưng phải chờ vì CPU đang bận với một nhiệm vụ khác. Để giải thích tại sao việc cung cấp cho vm của bạn nhiều lõi có thể có tác động hiệu năng, tôi sẽ sử dụng một ví dụ đơn giản: nếu tôi có 4 lõi vật lý và 4vms, nếu bạn có 3 VM với 2 lõi và một vm với 4 lõi, các VM nhỏ hơn của bạn sẽ thực sự nhận được nhiều chu kỳ hơn, vì chúng có thể "phù hợp" hơn trong bội số. Đi càng bảo thủ càng tốt với bạn vcpus!
Rqomey

@MarkHenderson Tôi có thể thấy điều đó có thể có ích như thế nào và điều gì đó tương tự có thể xảy ra với anh chàng đã hỏi câu hỏi kể từ khi anh ta làm việc với trình biên dịch.
thực tế

@Nils Tôi tin rằng việc cung cấp cho mỗi lõi VM 2 cho dù có nhu cầu kinh doanh cho nó hay không là một ý tưởng thực sự tồi tệ. Nó có thể dễ dàng ảnh hưởng tiêu cực đến bạn theo nhiều cách, kích thước khe cắm, không đủ lõi để khởi động lại / chuyển đổi dự phòng, mất hiệu suất do những gì Rqomey viết, chỉ vô số thứ khác. Bạn luôn có thể truy cập VM của mình thông qua vCenter và DCUI.
thực tế

3

Vấn đề cơ bản là giống như với lập lịch trình quy trình trên một hệ thống vật lý. Miễn là tải hệ thống thấp hơn số lõi (hoặc thậm chí cả bộ xử lý logic, trong trường hợp HyperThreading), tất cả đều ổn và bộ xử lý có thể xử lý tải.

Vì vậy, miễn là tải đồng thời trên tất cả các vCPU đã sử dụng không vượt quá tải có thể được xử lý bởi các lõi vật lý của bạn thì tất cả đều ổn.

Đối với nhu cầu của bạn, chỉ biên dịch là một công việc chuyên sâu về CPU, đôi khi chỉ cần thiết. Đối với các trình biên dịch-VM, chúng tôi phân bổ càng nhiều CPU càng tốt. Vì vậy, nếu có nhu cầu biên dịch, nó sẽ được thực hiện nhanh nhất có thể (nếu trình biên dịch của bạn hỗ trợ biên dịch paralell).

Điều này có thể không đúng với trình biên dịch-VM đang tải không đổi (ví dụ: nếu bạn cung cấp dịch vụ internet để thực hiện biên dịch và nó liên tục được sử dụng).


2

Một nguyên tắc nhỏ mà tôi đã thấy (có thể trong tài liệu của VMware) là không phân bổ nhiều lõi cho VM hơn là tồn tại trên máy chủ, bởi vì điều đó sẽ khiến nhiều vCores được mô phỏng trên một lõi, thêm chi phí không cần thiết.


1
Điều gì về ngược lại? Nếu tôi có Xeon 6 nhân và tôi chỉ phân bổ 4 lõi trong VM thì sao? Hiệu suất sau đó sẽ là gì? Hệ thống VM sẽ có thể thu hoạch năng lượng từ cả 6 lõi vật lý hay sẽ bị giới hạn ở 4?
Overmind

Nếu bạn chỉ cung cấp cho nó 4 lõi, nó sẽ chỉ có quyền truy cập vào 4 lõi một lần. Nhưng sự hiểu biết của tôi (chưa được xác nhận) là 4 lõi ảo đó có thể được phân bổ cho bất kỳ 4 trong số 6 lõi vật lý nào, trừ khi bạn đã cấu hình ghim.
Paul Gear
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.