Computer >> Máy Tính >  >> Phần mềm >> Máy ảo

Chọn số lượng vCPU và lõi cho một máy ảo

Khi tạo máy ảo trong các siêu giám sát khác nhau (VMWare, KVM, Hyper-V, v.v.), bạn có thể thấy rằng đôi khi máy ảo có thể không thấy tất cả các ổ cắm bộ xử lý ảo (vCPU) được gán cho nó. Trong trường hợp của chúng tôi, 8 vCPU đã được gán cho một máy ảo KVM và Windows 10 đã được cài đặt trên đó như một hệ điều hành khách. Tuy nhiên, Windows phát hiện các vCPU này là các bộ xử lý riêng biệt (không phải lõi) và nó chỉ có thể sử dụng 2 trong số đó.

Máy ảo Windows 10 Chỉ sử dụng 2 lõi

Nếu bạn mở Windows Device Manager, bạn có thể đảm bảo rằng tất cả các lõi được phân bổ đều hiển thị dưới dạng 8 bộ xử lý ảo riêng biệt QEMU Virtual CPU phiên bản 2.5+ .

Chọn số lượng vCPU và lõi cho một máy ảo

Đồng thời, thuộc tính Windows 10 (Máy tính -> Thuộc tính) và Trình quản lý tác vụ cho thấy chỉ có 2 bộ xử lý QEMU Virtual.

Chọn số lượng vCPU và lõi cho một máy ảo

Điều đó có nghĩa là Windows 10 chỉ có thể sử dụng 2 lõi bất kể bạn sẽ thêm bao nhiêu lõi. Đồng thời, một máy chủ ảo chạy Windows Server 2016 trên cùng một siêu giám sát có thể thấy tất cả 16 vCPU được cấp phát cho nó.

Số lượng bộ xử lý được hỗ trợ trong Windows

Vấn đề là các phiên bản Windows dành cho máy tính để bàn (Windows 10 / 8.1 / 7) có hạn chế về số lượng bộ xử lý vật lý tối đa (ổ cắm) một máy tính có thể sử dụng:

  • Windows 10 Home - 1 CPU
  • Windows 10 Professional - 2 CPU
  • Máy trạm Windows 10 - tối đa 4 CPU
  • Windows Server 2016 - tối đa 64 CPU

Tuy nhiên, hạn chế này không liên quan đến số lượng lõi. Để cải thiện hiệu suất của máy ảo, bạn có thể sử dụng bộ xử lý có nhiều lõi hơn . Hầu hết các siêu giám sát có thể cung cấp vCPU dưới dạng bộ xử lý, lõi bộ xử lý hoặc thậm chí là luồng. Có nghĩa là thay vì 8 vCPU, bạn có thể thêm 2 vCPU (2 ổ cắm) với 4 trên mỗi ổ cắm. Hãy xem cách chỉ định bộ xử lý ảo làm lõi trong các trình siêu giám sát khác nhau và cách liên kết nó với kiến ​​trúc NUMA được sử dụng trong các bộ xử lý hiện đại.

Quản lý Lõi ảo &vCPU trong KVM

Trong máy ảo KVM của tôi đang chạy Windows 10 , tất cả các lõi ảo được chỉ định được coi là bộ xử lý riêng biệt.

Để sử dụng tất cả tài nguyên CPU được phân bổ cho một máy ảo, nó phải thấy một bộ xử lý 8 lõi, 2 vCPU với 4 lõi mỗi máy hoặc 1 vCPU với 4 lõi trong hai luồng thay vì 8 vCPU. Hãy thử thay đổi việc phân bổ lõi ảo cho máy ảo KVM.

Tắt máy ảo của bạn:

# virsh shutdown w10testvm - ở đâu w10testvm là tên máy ảo của bạn

Dưới đây là các khía cạnh của quản lý máy ảo KVM từ bảng điều khiển bằng cách sử dụng virsh .

Hiển thị cấu hình XML hiện tại của máy ảo KVM:

# virsh dumpxml w10testvm

Chúng tôi cần một khối mô tả cài đặt CPU VM:

<vcpu placement='static'>8</vcpu>
<cputune>
<shares>1000</shares>
</cputune>
<resource>
<partition>/machine</partition>
</resource>
<os>
<type arch='x86_64' machine='pc-i440fx-rhel7.6.0'>hvm</type>
<bootmenu enable='yes'/>
</os>
<features>
<acpi/>
<apic/>
<pae/>
</features>

Như bạn có thể thấy, 8 vCPU được đặt ở đây. Hãy thay đổi cấu hình:

# virsh edit w10testvm

Thêm khối sau vào sau :

<cpu mode='host-passthrough' check='none'>
<topology sockets='1' cores='4' threads='2'/>
</cpu>

Ở đâu:

  • host-passthrough là chế độ giả lập trong đó máy ảo nhìn thấy bộ xử lý vật lý của nút cụm
  • sockets='1' cho biết rằng có một vCPU (ổ cắm)
  • cores='4' bộ xử lý có 4 lõi trên mỗi ổ cắm
  • threads='2' lõi ieach có 2 luồng

Lưu tệp cấu hình và khởi động máy ảo. Đăng nhập vào máy ảo khách Windows 10, chạy Trình quản lý tác vụ hoặc Giám sát tài nguyên và đảm bảo rằng Windows nhìn thấy tất cả các lõi ảo được phân bổ.

Chọn số lượng vCPU và lõi cho một máy ảo

Bộ xử lý vật lý của máy chủ, CPU Intel (R) Xeon (R) Silver 4114 , hiện được hiển thị thay vì hiển thị ảo trong thuộc tính hệ thống.

Chọn số lượng vCPU và lõi cho một máy ảo

Đây là cách chúng tôi quản lý để giải quyết vấn đề tải nặng cho máy ảo vì hai lõi không đủ để ứng dụng hoạt động bình thường.

Đặt Số lõi trên mỗi vCPU cho máy ảo VMWare

Bạn có thể thay đổi cách trình bày vCPU cho máy ảo VMWare trong giao diện vSphere Client.

  1. Tắt máy ảo và mở cài đặt của nó;
  2. Mở rộng CPU phần;
  3. Thay đổi cấu hình máy ảo để hệ điều hành khách có thể thấy 2 bộ xử lý với 4 lõi mỗi bộ. Thay đổi giá trị Cores per Socket đến 4 . Có nghĩa là hệ điều hành khách sẽ thấy hai CPU 4 nhân (2 ổ cắm với 4 lõi trên mỗi ổ cắm); Chọn số lượng vCPU và lõi cho một máy ảo
  4. Lưu các thay đổi và chạy VM.

vCPU Máy ảo và Kiến trúc NUMA

Có một số khía cạnh khác của việc gán vCPU và lõi cho máy ảo mà bạn phải hiểu.

Khi chỉ định số lõi trên mỗi ổ cắm, hãy đảm bảo rằng bạn có kiến ​​trúc NUMA (được sử dụng trong hầu hết các CPU hiện đại). Bạn không nên chỉ định nhiều lõi trên mỗi ổ cắm (và tổng số vCPU) cho một máy ảo hơn số lõi có sẵn trên ổ cắm vật lý của bạn (nút NUMA). Khi được đặt trên một nút NUMA vật lý duy nhất, một máy ảo sẽ có thể sử dụng RAM cục bộ nhanh có sẵn trên nút NUMA cụ thể. Nếu không, các quy trình sẽ phải đợi phản hồi từ một nút NUMA khác (mất nhiều thời gian hơn).

Nếu bạn gán hai ổ cắm ảo riêng biệt cho một máy ảo, trình giám sát có thể chạy chúng trên các nút NUMA khác nhau. Nó sẽ ảnh hưởng đến hiệu suất máy ảo.

Nếu số vCPU cần thiết nhiều hơn số lõi trên 1 ổ cắm vật lý (nút NUMA), hãy tạo một số ổ cắm ảo (bộ xử lý) với số lõi cần thiết. Ngoài ra, không nên sử dụng số lượng bộ xử lý lẻ (tốt hơn là nên thêm 1 vCPU).

Nó cho phép duy trì hiệu suất máy ảo.

Chọn số lượng vCPU và lõi cho một máy ảo

Ví dụ:bạn nên sử dụng cấu hình sau cho máy chủ 2 bộ xử lý với 10 lõi trên mỗi ổ cắm (có tổng cộng 40 vCPU bao gồm cả Hyper - Phân luồng ) khi bạn định cấu hình vCPU cho một máy ảo:

Số vCPU cần thiết Số lượng ổ cắm ảo trong Cài đặt máy ảo Số lõi trên mỗi Bộ xử lý ảo trong Cài đặt máy ảo
1 1 1
……
10 1 10
11 Không tối ưu
12 2 6
……
20 2 10
Trong phiên bản ESXi miễn phí, bạn không thể tạo một máy ảo có nhiều hơn 8 vCPU.

Ví dụ:một máy ảo chạy Microsoft SQL Server 2016 Enterprise Edition với 16 vCPU (trong cấu hình 8 ổ cắm với 2 lõi trên mỗi ổ cắm ) sẽ có hiệu suất kém hơn so với máy ảo có 2 ổ cắm x 8 lõi trên mỗi ổ cắm .
Cũng nên nhớ rằng một số ứng dụng được cấp phép tùy thuộc vào số lượng ổ cắm vật lý (giống như trong các phiên bản SQL Server trước đó). Đôi khi, việc cấp phép cho một bộ xử lý đa lõi sẽ có lợi hơn so với nhiều bộ xử lý có số lõi ít ​​hơn.

Các phiên bản Windows Server hiện đại được cấp phép trong môi trường ảo theo một cách đặc biệt. Ngoài ra, có một số khía cạnh của việc cấp phép bộ xử lý trong VMWare vSphere.