Tại sao việc tăng số lượng bộ xử lý logic của máy ảo cho máy chủ lưu trữ Hyper-V làm tăng hiệu suất của máy ảo đó?


9

Theo hiểu biết của tôi, các máy ảo (giả sử Relative Weightlà bằng nhau) có được một phần bằng nhau của bộ xử lý.

Khi VM được cung cấp một số thời gian xử lý, sẽ không có vấn đề gì nếu VM nhìn thấy một lõi cho nó sử dụng hoặc nhiều lõi, vì việc xử lý xuất phát từ một loạt các bộ xử lý trên máy chủ Hyper-V bất kể. Tuy nhiên, khi tôi đặt Number of logical processorscài đặt từ 1 đến 4 trong Hyper-V cho một VM cụ thể, tôi thấy hiệu suất tăng rất lớn.

Thông số kỹ thuật trên thiết lập hiện tại của tôi là khoảng:

  • Máy chủ Hyper-V có RAM 32 GB, 24 bộ xử lý logic (từ sai?), Một vài TB không gian.

  • Máy ảo được phân bổ RAM 6 GB, 1 hoặc 4 lõi, dung lượng vài trăm GB và chạy 2008 R2.

Tôi đã trải nghiệm một điều tương tự trên các thiết lập Hyper-V trước đây.

Câu trả lời:


20

Các máy ảo trong mọi trình ảo hóa mà tôi biết có thể sử dụng các CPU ảo bổ sung để lên lịch cho các luồng thực thi đồng thời bổ sung.

Chính xác đó là lớp trừu tượng giữa máy vật lý và máy ảo khiến nó không hoạt động theo cách bạn mô tả. VM không biết máy có vật lý có bao nhiêu lõi. VM không "nhìn thấy" CPU vật lý (hoặc lõi) trên máy vật lý. Trình ảo hóa cung cấp cho VM bao nhiêu CPU ảo và HĐH khách sử dụng các CPU ảo đó để lên lịch cho các luồng đồng thời bổ sung ... Tổng số CPU ảo mà trình ảo hóa cung cấp cho các máy ảo thậm chí có thể vượt quá số lượng CPU vật lý / lõi trong máy.

Nói một cách khác, một máy ảo, khi được gán một vCPU duy nhất, lên lịch các luồng của nó như thể nó chỉ có một CPU. Không quan trọng có bao nhiêu lõi trong máy vật lý cơ bản. (Mặc dù đáng chú ý là máy vật lý có thể lên lịch cho một luồng VM trên một lõi vật lý cho một lượng tử luồng hoặc lát thời gian, sau đó chạy nó trên lõi vật lý khác vào lần tới khi nó được lên lịch để chạy. Máy ảo có Không có ý tưởng nào về điều đó đang xảy ra. Tất cả những gì nó biết là nó chỉ có thể lên lịch một luồng tại một thời điểm, từng luồng một, bởi vì nó chỉ có một CPU ảo.)

Và hãy rất rõ ràng về các điều khoản của chúng tôi ở đây. Bạn gán vCPU hoặc CPU ảo cho VM, không phải "lõi". Lõi (theo tôi giả sử bạn có nghĩa là các đơn vị xử lý vật lý có chung một ổ cắm vật lý) không bằng vCPU. Có một lớp trừu tượng giữa chúng. Nếu một VM chỉ có 1 vCPU được gán cho nó, nó chỉ có thể lên lịch cho một luồng để chạy tại một thời điểm. Đó là lý do tại sao VM của bạn chạy nhanh hơn với 2 -4 CPU ảo được gán cho nó - bởi vì giờ đây nó có thể lên lịch nhiều hơn một luồng để chạy đồng thời.

Tuy nhiên, chắc chắn có luật giảm lợi nhuận ở đây, vì số lượng CPU ảo quá mức phải chịu chi phí cao hơn và cao hơn trong những thứ như đồng bộ hóa, v.v.

Có một số khác biệt nhỏ giữa cách Hyper-V và VMware hypannerors lên lịch cho các luồng máy ảo để thực thi và chúng khác nhau về cách tiếp cận tài nguyên vật lý "quá mức", nhưng đây là một khái niệm chung tốt để bắt đầu.


7
@ Flapjack00 Không ... đó hoàn toàn trái ngược với những gì tôi vừa nói. Và hãy rất rõ ràng về các điều khoản của chúng tôi ở đây. Bạn gán vCPU hoặc CPU ảo cho VM, không phải "lõi". Lõi (theo tôi giả sử bạn có nghĩa là các đơn vị xử lý vật lý có chung một ổ cắm) không bằng vCPU. Có một lớp trừu tượng giữa chúng. Nếu một VM chỉ có 1 vCPU được gán cho nó, nó chỉ có thể lên lịch cho một luồng để chạy tại một thời điểm.
Ryan Ries

1
Ah! Vì vậy, trong trường hợp đó, một VM được cấu hình với 4 vCPU có thể lên lịch 4 luồng cùng một lúc. Giả sử máy chủ của tôi có đủ vCPUs, 4 luồng đó có thể được xử lý cùng một lúc không?
Blackjack00

1
@ Flapjack00 "Giả sử máy chủ của tôi có đủ vCPU khả dụng" - Máy chủ không có vCPU, VM thực hiện. Máy chủ lưu trữ có lõi (hoặc chính xác hơn là bộ xử lý logic - một lõi đơn có thể có nhiều bộ xử lý logic, như với Siêu phân luồng) mà vCPU được gán cho.
BlueRaja

2
@Dan, đó là một vấn đề cụ thể đối với VMware. Nó không ảnh hưởng đến Hyper-V.
Jake Oshins

1
"X vCpu yêu cầu khóa Y cpu" mà VMware đã bị xóa trong ESX 3.5, vì vậy điều này không thực sự áp dụng cho bất kỳ trình ảo hóa hiện đại nào nữa. Điều đó đang được nói, bạn nên cẩn thận về việc không gán các tài nguyên không cần thiết cho máy ảo của mình và vCpu đặc biệt quan trọng. Quá nhiều trong số họ và bạn sẽ mất hiệu suất tổng thể.
pauseka

3

Số lượng CPU ảo được chỉ định không thành vấn đề. Phần mềm chạy trong VM không nhận thức được thực tế là trong VM và máy chủ có khả năng nhiều hơn những gì VM được trình bày. Vì vậy, nếu bạn đang chạy phần mềm có thể tận dụng nhiều lõi CPU, trong một máy ảo chỉ có một lõi được gán, phần mềm sẽ chỉ lập lịch một lõi cho các tác vụ của nó và VM cũng sẽ chỉ sử dụng một lõi máy chủ tại một thời gian. Khi bạn cung cấp cho VM nhiều lõi hơn, phần mềm có thể lên lịch cho các tác vụ song song hơn, mà CPU của máy chủ sẽ lên lịch cho VM.

Cẩn thận không cung cấp cho VM quá nhiều, để không gây ra tranh chấp, nếu một VM có nhiều lõi ảo hơn máy chủ, VM sẽ tự chống lại và trong trường hợp các trình ảo hóa theo lịch trình của băng đảng, như vmware, VM sẽ không bao giờ có thể thực hiện bất cứ điều gì cả (tùy chọn để tổng thể bị chặn bởi lớp quản lý).

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.