Có bất kỳ lợi thế thực sự nào khi gán nhiều lõi lõi khác cho VirtualBox không?


40

Tôi có một i7 lõi ​​tứ 2.8 với VirtualBox. Tôi có tùy chọn gán tối đa 4 lõi cho máy khách, nhưng tôi chỉ mới thực hiện hai lõi. Những lợi thế / bất lợi của việc gán thêm lõi cho khách là gì? BTW, tôi vẫn có thể chơi StarCraft 2 trên các cài đặt Ultra mọi lúc trong khi chạy hai hệ điều hành khách (Win 7 và Ubuntu), và tương tự với BFBC2 (trình kiểm tra căng thẳng của tôi). Làm thế nào để i7 phản ứng với tải không đồng đều trên lõi?

Câu trả lời:


62

Các lõi "ảo" mà bạn gán cho VM có sẵn để sử dụng trong đa xử lý trong HĐH máy khách. Nếu bạn chỉ gán một lõi cho VM, thì hệ điều hành khách sẽ không có khả năng phân phối tải trên nhiều lõi. Vì vậy, hãy giả sử một số tình huống thực tế:

Máy chủ có 4 CPU, khách được chỉ định 1 CPU

  • Máy chủ chạy 4 lõi vật lý
  • HĐH máy khách trong VM được gán 1 lõi

Trong trường hợp này, hệ điều hành khách sẽ chỉ có thể sử dụng một lõi. Do đó, nếu bạn chạy một ứng dụng đa luồng, có khả năng mở rộng tốt trên nhiều lõi, nó sẽ vẫn chỉ chạy trên một lõi. Do đó, tất cả các luồng trên HĐH khách phải chia sẻ một lõi vật lý.

Chạy một hệ điều hành khách trong thiết lập này tải CPU đầy đủ sẽ mang lại tải CPU cho hệ điều hành máy chủ ~ 25% (một trong 4 lõi được tải trên máy chủ).

Tất nhiên, bạn vẫn có thể có các tác vụ tiêu thụ CPU chạy trong hệ điều hành máy chủ của mình và sử dụng 3 lõi còn lại.

Máy chủ có 4 CPU, khách được chỉ định 4 CPU

  • Máy chủ chạy 4 lõi vật lý
  • HĐH máy khách trong VM được gán 4 lõi

Trong trường hợp này, bạn có thể chạy các ứng dụng đa luồng có tỷ lệ tốt trong máy khách VM có thể sử dụng toàn bộ 4 CPU ảo. VirtualBox sẽ sử dụng 4 lõi vật lý để xử lý các tác vụ được lên lịch trong VM và do đó, tải CPU chủ của bạn có thể đạt mức sử dụng tối đa 100%.

Vậy bạn nên chọn cài đặt nào?

Câu trả lời cho câu hỏi này phụ thuộc khá nhiều vào những gì bạn muốn làm. Trong một số trường hợp, có thể hữu ích khi gán tất cả các lõi cho VM hoặc thậm chí chạy nhiều VM với mỗi CPU có đủ số lượng CPU được gán. Trong những trường hợp như vậy, VM có thể sử dụng toàn bộ sức mạnh xử lý của máy chủ. Nếu nhiều CPU được gán cho VM hơn so với thực tế hiện tại thì VM sẽ bị ảnh hưởng bởi tải trên các VM khác nhau. Để ngăn chặn điều này, bạn có thể dành một số lõi cho các VM cụ thể. Ví dụ, chạy 2 VM với 2 CPU được gán cho mỗi nút trên 4 lõi có thể giúp mỗi VM có được 2 CPU chuyên dụng (giả sử không có tải được áp đặt bởi HĐH máy chủ, cũng mất một phần sức mạnh xử lý).

Nó có tác động tiêu cực đến máy chủ của tôi để gán tất cả các lõi cho VM không?

Một lần nữa điều này phụ thuộc vào phần mềm chạy. Nếu bạn chạy một VM không hoạt động (hoàn toàn không có chương trình sử dụng nhiều CPU), tải được áp đặt bởi VM này sẽ ở mức gần 0%. Bạn thậm chí có thể chạy song song 10 VM và vẫn gặp tải CPU chủ gần 0% nếu tất cả các VM không hoạt động.

Làm thế nào để CPU hoạt động trên tải không đồng đều?

Chà, phân phối tải CPU phụ thuộc rất nhiều vào một thành phần tích hợp dành riêng cho hệ điều hành được gọi là bộ lập lịch. Đối với Windows XP, bộ lập lịch đã cố gắng tải vòng tròn tất cả các lõi CPU. Vì vậy, chạy một tác vụ đơn luồng với tải đầy đủ trên CPU lõi tứ sẽ mang lại tải ~ 25% cho mỗi lõi.
Thật không may, điều này đã được chứng minh là xấu cho quản lý năng lượng CPU hiện đại. Đối với các hệ thống hiện đại, đó thậm chí còn là một lợi thế nếu một lõi đơn được tải lên tới 100% trước khi lõi thứ hai thậm chí được tham gia. Lý do là miễn là không có đủ tải để sử dụng hết một lõi, các lõi khác có thể vẫn ở chế độ ngủ sâu để tiết kiệm năng lượng và giảm tản nhiệt.

Đối với một số CPU như Intel Core i-Series và AMD mới hơn (Bulldozer), điều này thậm chí còn thú vị hơn vì trong trường hợp chỉ có một tập hợp các lõi được sử dụng thì các bộ không sử dụng sẽ bị tắt. Điều này làm giảm mức tiêu thụ năng lượng của CPU. Cả (Intel và AMD) bắt đầu sử dụng ngân sách tiêu thụ nhiệt và năng lượng sau đó để ép xung các lõi đang hoạt động. Vì vậy, điều này có thể cung cấp cho các ứng dụng đơn luồng (không thể phân phối cho nhiều lõi để thực hiện song song một tác vụ). Tuy nhiên, khi tất cả các lõi đều hoạt động thì hầu hết các công nghệ "tăng tốc" này chỉ có ảnh hưởng nhỏ đến sức mạnh xử lý vì tình huống "tất cả các lõi hoạt động" chính xác là tình huống mà CPU được thiết kế.

Vì vậy, câu trả lời là lõi i7 của bạn xử lý rất tốt tải không đồng đều trên các lõi đơn và thậm chí có thể tăng hiệu năng cho các ứng dụng đơn luồng. Tuy nhiên, mức tăng này nằm trong phạm vi vài phần trăm trong khi các ứng dụng đa luồng thực sự có thể phân phối tải trên nhiều lõi CPU có thể được tăng bởi các yếu tố (x2 trên lõi kép, 4x trên lõi tứ ...) trong trường hợp tối ưu . Vì vậy, đa luồng luôn cung cấp nhiều năng lượng hơn về sức mạnh CPU kết hợp so với luồng đơn kết hợp với tăng xung nhịp.


1
Wow, điều đó thực sự giúp tôi hiểu hành vi đa lõi, không chỉ ảnh hưởng đến vms.
Dan Allen

2
Tôi gặp sự cố với máy khách Ubuntu 12.04 LTS của tôi chạy rất chậm trên Macbook Air w / 2 ghz i7 Dual core. Tôi đã tăng cài đặt của khách hàng lên hai cpus và bây giờ nó sáng lên. Tôi đang bỏ qua thông báo cảnh báo về các cài đặt không tối ưu.
Mike Graf

Điều này rất phức tạp vì VirtualBox không sử dụng Core. Nó sử dụng Bộ xử lý và mọi người đều có 1 Bộ xử lý có thể 2 .. ngay cả khi đó là lõi tứ hoặc lõi tám, trừ khi họ gọi Bộ xử lý lõi?
SSpoke

0

Tôi chưa đi sâu vào hướng dẫn sử dụng trên trang VB, nhưng tôi cho rằng việc phân bổ lõi cho máy khách sẽ cho phép HĐH khách nhìn thấy nhiều lõi và do đó cho phép các ứng dụng có thể tận dụng các lõi bổ sung đó với tốc độ tăng thêm / sức mạnh / hiệu quả, giống như nó sẽ cho hệ điều hành máy chủ.

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.