Có một cài đặt tối ưu cho số lượng lõi CPU tiếp xúc với máy ảo không?


23

VirtualBox, và có thể cả phần mềm VM khác, cho phép người dùng chỉ định số lượng CPU tiếp xúc với VM. Trong trường hợp cụ thể của tôi, tôi có CPU lõi kép, với Windows 7 64 bit chạy nguyên bản và Ubuntu 9.04 64 bit là VM.

Tệp trợ giúp đề nghị không đặt cài đặt này lên trên số lõi vật lý có sẵn. Điều này thật ý nghĩa. Vì vậy, nó là phân bổ tốt nhất 1 hoặc 2 lõi CPU? Điều này phụ thuộc hoàn toàn vào tải CPU gốc?

Câu trả lời:


6

Nó hoàn toàn phụ thuộc vào những gì hệ điều hành khách đang làm. Theo kinh nghiệm cá nhân của tôi, VM đang chạy một chương trình duy nhất (máy chủ xây dựng, máy chủ trac, SVN, v.v.) vì vậy không có lý do gì để đặt nó lên trên một chương trình.

Một trường hợp có thể xảy ra nếu đó là người dùng cuối nói rằng một trường đại học đang sử dụng hệ điều hành khách như một sự vứt bỏ (tức là TA) thì có thể đặt nó lên cao hơn một.


Vì vậy, nói cách khác: đối với một hệ thống tạm thời, bạn cũng có thể tối đa hóa hạn ngạch lõi CPU; nhưng đối với việc sử dụng "thông thường" hoặc thông thường, hãy đặt nó thành một lõi (để không can thiệp quá nhiều vào hiệu năng của hệ điều hành máy chủ)?
sblair

18

Thông tin trong câu trả lời này không còn đúng nữa . Nó đã trở lại chính xác trong những ngày hợp tác nghiêm ngặt, nhưng không còn như vậy nữa.

Tôi đang giữ câu trả lời dưới đây vì lợi ích thịnh vượng, nhưng xin đừng dựa vào đó để chính xác cho các nhà ảo thuật hiện đại.


Bạn không bao giờ nên gán tất cả các lõi của mình dưới dạng vCPUs trong một máy ảo.

Nếu một máy ảo yêu cầu bất kỳ thời gian CPU, VMWare phân bổ hoặc tất cả các vCPUs, hoặc không của vCPUs.

Điều này có nghĩa là, trên hệ thống 4 lõi nếu bạn phân bổ cả 4 lõi, thì chỉ có máy chủ hoặc khách, có thể được phân bổ thời gian xử lý, không phải cả hai cùng một lúc.

Điều này sẽ làm hỏng hoàn toàn hiệu suất trong cả hai môi trường.

Hãy phân bổ số lượng lõi lẻ (giả sử, 3). Nó cảm thấy kỳ lạ, nhưng đó là một lựa chọn hoàn toàn hợp pháp.

Nói chung, tôi không bao giờ phân bổ nhiều hơn (n / 2) vCPU (trong trường hợp của bạn là 2) - nhưng tôi thường phân bổ các lõi trên các máy chủ có từ 12 đến 32 lõi trong đó bạn có thể phân bổ số lượng lớn vCPU mà không bị ảnh hưởng lớn.


đây là câu trả lời duy nhất cho đến nay được viết với bất kỳ mức độ thẩm quyền nào. Nhờ để chia sẻ kinh nghiệm của bạn.
G-Wiz

5
-1: Không phù hợp với kinh nghiệm của tôi. VM là một quá trình có thời gian CPU có thể được lên lịch giống như bất kỳ quy trình nào khác trên máy chủ. Bạn có thể điều chỉnh mức độ ưu tiên của quá trình VM trên máy chủ và hệ thống sẽ cân bằng tải một cách thích hợp.
bwDraco

2
( còn tiếp ) Giả sử bạn có máy chủ 16 lõi. Một cấu hình ví dụ sẽ là 4 VM, mỗi VM được cấu hình cho 8 lõi. Mặc dù điều này có vẻ là quá nhiều lõi ảo, nhưng nó cho phép các VM riêng lẻ mở rộng tốt hơn trên khối lượng công việc nặng hơn. Nếu việc sử dụng kết hợp vượt quá số lượng lõi vật lý, máy chủ sẽ cân bằng tải cho phù hợp. Đó là cách ảo hóa có thể tăng thông lượng và giảm chi phí - bằng cách tận dụng tối đa phần cứng máy chủ.
bwDraco

@DragonLord - câu trả lời này đã hơn 2 năm cho một câu hỏi gần 4 tuổi và có thể dựa trên thông tin lỗi thời. Tôi đang đề cập đến "Lập kế hoạch nghiêm ngặt" từ ESX nhưng tôi không nhớ thông tin đó bao nhiêu tuổi và tôi không cập nhật thông tin về việc lập lịch trình CPU đã thay đổi như thế nào trong vài năm qua.
Đánh dấu Henderson

1
Chỉ muốn bỏ một lưu ý ở đây là trên cả Ubuntu 14.04 và 16.04, có sự cố khởi động cũng như sự cố nếu bạn đặt số lượng CPU thành một số lẻ. Tôi đã không thể hiểu tại sao bởi vì tôi chỉ đơn giản quyết định giữ nó ở số chẵn để tránh các vấn đề.
Dorian

3

Số lượng lõi tiếp xúc với CPU khách không ảnh hưởng đến hiệu suất nhiều như bạn muốn. Nó chỉ điều chỉnh lượng lõi mà CPU khách "nhìn thấy".

Tùy thuộc vào cách trình giả lập được thiết lập, nó có thể chỉ bằng một nửa hiệu suất của máy ảo, không làm gì hoặc chỉ ảnh hưởng đến cách hệ điều hành / ứng dụng khách phân chia lập lịch xử lý luồng của chúng.

Tốt nhất là để mặc định. Nếu bạn gặp phải vấn đề về hiệu năng trên PC chủ, thì bạn chỉ cần điều chỉnh mức ưu tiên của quy trình với Trình quản lý tác vụ Windows.


3

Như Nate đã đề cập, miễn là VM của bạn chủ yếu phục vụ chạy một quy trình đơn luồng, có rất ít lý do để phân bổ nhiều hơn một lõi.

Tuy nhiên, nếu bạn có kế hoạch sử dụng nó theo cách có thể hưởng lợi từ nhiều lõi hơn (chương trình đa luồng, nhiều chương trình song song, ..), thì câu chuyện phức tạp hơn. Trước đây tôi đã cho rằng sử dụng một nửa số CPU của mình cho VM là một ý tưởng hay. Hóa ra điều này không phải lúc nào cũng tối ưu.

Cách duy nhất để đảm bảo là chạy điểm chuẩn .. Tôi không biết tại sao, nhưng trong hệ thống Core2 Quad của tôi (có hỗ trợ VT-x, phân trang lồng nhau, ..), thực sự sử dụng 1 trong 4 lõi hoạt động tốt hơn hơn là sử dụng 2 lõi trở lên! Tôi thấy điều này chỉ đơn giản là trong thời gian khởi động của VM, mà còn trong các điểm chuẩn tổng hợp.

Với kết quả phần cứng khác là khác nhau. Tôi cũng có một i7 với 8 lõi và hiệu năng có vẻ tốt hơn nhiều với số lượng lõi ở đó (sử dụng 4 nhân một cách vui vẻ).

Mẹo của tôi: điểm chuẩn một phần cứng mới đầu tiên.


1

Tôi tin tưởng bộ lập lịch của HĐH và chỉ đặt VM thành số lõi vật lý, trừ khi bạn biết rằng bạn luôn muốn máy chủ có lõi không hoạt động trong khi bạn đang bận trong VM.


1

Điều này phụ thuộc vào những gì bạn muốn làm trên máy ảo cũng như trên máy vật lý. Nếu bạn cần sử dụng máy ảo trong khi hệ điều hành máy chủ đang được sử dụng cho một số hoạt động khác, có thể tốt hơn là sử dụng hai lõi bộ xử lý cho VM để máy chủ còn lại hai nếu VM đang tải đầy. Mặt khác, nếu bạn đang làm việc chủ yếu trên VM, bạn có thể sử dụng tất cả các lõi của bộ xử lý.

Tuy nhiên, trừ khi khách có thể sử dụng tất cả bốn lõi cùng một lúc, bạn có thể sử dụng tất cả chúng một cách an toàn trong khi tiếp tục hoạt động trên hệ điều hành máy chủ. Hãy nhớ rằng bạn luôn có thể điều chỉnh mức độ ưu tiên của quy trình VM trong khi nó đang chạy trên hệ điều hành máy chủ và hệ thống sẽ cân bằng tải cho phù hợp.


Điều này dựa trên kinh nghiệm của tôi với VirtualBox. Vì tôi không quen thuộc với các sản phẩm của VMware, tôi có thể sai; nếu vậy, tôi sẽ xóa câu trả lời này.
bwDraco

0

vâng, tôi cũng nói rằng nó phụ thuộc. Nhưng tôi sẽ nói những gì tôi thích làm. Trong công việc tôi có một CPU lõi tứ. Vì vậy, đối với hình ảnh ảo của tôi (win7), tôi đã phân bổ hai CPU. Bằng cách đó, tôi có thể sử dụng cả máy chủ và máy ảo cùng một lúc và mỗi máy đều có tài nguyên CPU bằng nhau.

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.