Là một VM có 2 CPU thực sự nhanh hơn một với 4 CPU?


67

CNTT của chúng tôi đã tạo một VM với 2 CPU được phân bổ thay vì 4 tôi yêu cầu. Lý do của họ là VM hoạt động tốt hơn với 2 CPU chứ không phải 4 (theo họ). Lý do là VM hypanneror (VMWare trong trường hợp này) chờ tất cả các CPU có sẵn trước khi tham gia bất kỳ trong số chúng. Do đó, phải mất nhiều thời gian hơn để chờ 4 chứ không phải 2 CPU.

Liệu tuyên bố này có ý nghĩa?

Câu trả lời:


62

Điều này đã từng đúng, nhưng không còn đúng nữa.

Những gì họ đang đề cập đến là Lập kế hoạch nghiêm ngặt .

Quan trọng nhất trong tất cả, trong thuật toán đồng lập lịch chặt chẽ, sự tồn tại của vCPU bị trễ khiến toàn bộ máy ảo bị dừng lại. Trong thuật toán đồng lập lịch trình thoải mái, một vCPU hàng đầu quyết định liệu nó có nên tự dừng lại hay không dựa trên độ lệch so với vCPU anh chị em chậm nhất

Bây giờ, nếu máy chủ chỉ có 4 luồng, thì bạn sẽ thật ngớ ngẩn khi phân bổ tất cả chúng. Nếu nó có hai bộ xử lý và 4 luồng cho mỗi bộ xử lý, thì bạn có thể không muốn phân bổ tất cả nội dung của một bộ xử lý, vì trình ảo hóa của bạn nên cố gắng giữ vCPU trên cùng một nút NUMA để giúp truy cập bộ nhớ nhanh hơn và bạn làm cho công việc này trở nên khó khăn hơn bằng cách phân bổ toàn bộ ổ cắm cho một VM (Xem trang 12 của PDF đó ở trên).

Vì vậy, có những kịch bản mà ít vCPU có thể hoạt động tốt hơn nhiều, nhưng nó không đúng 100%.

Tất cả những gì đã nói và làm, tôi rất hiếm khi phân bổ nhiều hơn 3 vCPU cho mỗi khách. Mọi người đều có 2 mặc định, 3 nếu đó là khối lượng công việc lớn và 4 cho những thứ như Máy chủ SQL hoặc máy ảo xử lý hàng loạt thực sự nặng hoặc máy chủ đầu cuối có nhiều người dùng.


3
Chỉ là một bên - thậm chí ngoài những rào cản ảo hóa, nói chung là rất khó để viết phần mềm khai thác song song. Nếu những người làm phần mềm của bạn không đủ tốt, thì thực sự tốt hơn là có bốn máy chủ ảo chạy một phiên bản phần mềm, mỗi máy chủ chạy bốn luồng thực thi.
Luaan

4
@Luaan Hộp có SQL Server trên đó, vì vậy tôi cho rằng họ có một số phần mềm tốt ở đó.
AngryHacker

1
@AngryHacker có Máy chủ SQL có thể sử dụng cả 4 lõi rất hiệu quả giả sử bạn có các MAXDOPcài đặt phù hợp . Tuy nhiên, tùy thuộc vào khối lượng công việc, máy chủ SQL bị đánh thuế quá mức thường là dấu hiệu của thiết kế cơ sở dữ liệu xấu - chỉ mục xấu, không có chỉ mục cụm, quá nhiều chỉ mục, không tối ưu hóa, v.v. (không phải luôn luôn, nhưng thường xuyên).
Mark Henderson

1
@Luaan Đó vẫn là sự song song ... chỉ với độ trễ cao hơn nhiều nếu họ cần nói chuyện với nhau. :)
thiệu lại

@MarkHenderson Nó được tối ưu hóa khá tốt, nhưng một số khối lượng công việc chỉ quá lớn để có thể xử lý dễ dàng bởi 2 CPU cùng với hàng tấn truy vấn khác cùng một lúc.
AngryHacker

15

Điều này phần lớn phụ thuộc vào trình ảo hóa cơ bản và quản trị viên điều hành nó, hãy để tôi giải thích:

  1. Thực tế không tốt khi chỉ tự ý cung cấp cho bạn 4 CPU chỉ vì bạn yêu cầu nó. Nói chung, bạn nghĩ rằng bạn cần 4; nhưng giám sát tài nguyên nói rằng bạn chỉ cần 1.
  2. Ví dụ, VMware ESXi yêu cầu khóa tất cả các pCPU khi vCPU đưa ra yêu cầu đối với tài nguyên CPU ; Vì vậy, trên trình ảo hóa này, nó là xấu cho hiệu suất. KVM không khóa như ESXi; nó sử dụng bộ lập lịch kernel bên dưới, nhưng về lâu dài có thể tạo ra sự tranh chấp CPU.
  3. Nếu bạn đang xây dựng các hệ thống từ đầu với 4 CPU, bạn không thực sự mở rộng quy mô, nhưng lên (đó là thực tế tồi tệ đặc biệt là trên máy ảo). Bạn có thể muốn kiểm tra xem bạn đang kiến ​​trúc như thế nào cho dù bạn đang làm việc để nó có thể được xây dựng để mở rộng quy mô cho cơ sở hạ tầng đám mây hiện đại ngày nay.

Bạn có thể học được gì từ điều này? Luôn tạo VM với tài nguyên tối thiểu và tăng khi cần. Luôn mở rộng quy mô thay vì lên và bạn sẽ có thể chạy ứng dụng của mình ở bất cứ đâu.

Do việc khóa có thể được trải nghiệm với trình ảo hóa, nên thực sự đúng là 2 CPU có thể nhanh hơn 4 CPU.


4

Vâng, tuyên bố có ý nghĩa nói chung. Tuy nhiên, đó là thứ bạn nên kiểm tra cấu hình và khối lượng công việc chính xác của mình. Đôi khi nhiều CPU sẽ tốt hơn nếu bạn thực sự có thể tận dụng lợi thế của chúng. Tuy nhiên, nếu bạn thực sự không có nhiều sự song song đó, một VM được cấu hình với ít CPU hơn thường sẽ hoạt động tốt hơn một chút vì nó tránh được tình trạng chậm do các trạng thái sẵn sàng của CPU.

Tôi đã giảm các vCPU trên một số máy ảo của chúng tôi và đã thấy sự cải thiện về thông lượng trên đa số. Một số ít trở nên tồi tệ hơn và cần phải được tăng lên về số lượng vCPU.

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.