Computer >> คอมพิวเตอร์ >  >> ซอฟต์แวร์ >> เครื่องเสมือน

การเลือกจำนวน vCPU และคอร์สำหรับเครื่องเสมือน

เมื่อสร้างเครื่องเสมือนในไฮเปอร์ไวเซอร์ที่แตกต่างกัน (VMWare, KVM, Hyper-V เป็นต้น) คุณอาจเห็นว่าบางครั้งเครื่องเสมือนอาจไม่เห็นซ็อกเก็ตตัวประมวลผลเสมือน (vCPU) ทั้งหมดที่ได้รับมอบหมาย ในกรณีของเรา 8 vCPU ถูกกำหนดให้กับเครื่องเสมือน KVM และติดตั้ง Windows 10 เป็นระบบปฏิบัติการของแขก อย่างไรก็ตาม Windows ตรวจพบ vCPU เหล่านี้เป็นโปรเซสเซอร์ที่แยกจากกัน (ไม่ใช่คอร์) และสามารถใช้ได้เพียง 2 ตัวเท่านั้น

เครื่องเสมือน Windows 10 ใช้ 2 คอร์เท่านั้น

หากคุณเปิด Windows Device Manager คุณสามารถตรวจสอบให้แน่ใจว่าแกนที่จัดสรรทั้งหมดสามารถมองเห็นได้เป็น 8 ตัวประมวลผลเสมือนที่แยกจากกัน QEMU Virtual CPU เวอร์ชัน 2.5+ .

การเลือกจำนวน vCPU และคอร์สำหรับเครื่องเสมือน

ในเวลาเดียวกัน คุณสมบัติ Windows 10 (คอมพิวเตอร์ -> คุณสมบัติ) และตัวจัดการงานแสดงว่ามีตัวประมวลผลเสมือน QEMU เพียง 2 ตัวเท่านั้น

การเลือกจำนวน vCPU และคอร์สำหรับเครื่องเสมือน

หมายความว่า Windows 10 สามารถใช้ได้เพียง 2 คอร์ ไม่ว่าคุณจะเพิ่มกี่คอร์ก็ตาม ในเวลาเดียวกัน เซิร์ฟเวอร์เสมือนที่ใช้ Windows Server 2016 บนไฮเปอร์ไวเซอร์เดียวกันสามารถเห็น vCPU ทั้ง 16 ตัวที่จัดสรรให้

จำนวนโปรเซสเซอร์ที่รองรับใน Windows

ปัญหาคือเวอร์ชันเดสก์ท็อปของ Windows (Windows 10/8.1/7) มีข้อ จำกัด เกี่ยวกับ จำนวนตัวประมวลผลทางกายภาพสูงสุด (ซ็อกเก็ต) คอมพิวเตอร์สามารถใช้:

  • Windows 10 Home – 1 CPU
  • Windows 10 Professional – 2 CPU
  • Windows 10 Workstation – สูงสุด 4 CPU
  • Windows Server 2016 – สูงสุด 64 CPU

อย่างไรก็ตาม ข้อจำกัดนี้ไม่เกี่ยวข้องกับจำนวนคอร์ เพื่อปรับปรุงประสิทธิภาพของเครื่องเสมือน คุณสามารถใช้โปรเซสเซอร์ที่มี คอร์ . มากขึ้นได้ . ไฮเปอร์ไวเซอร์ส่วนใหญ่สามารถจัดเตรียม vCPU เป็นโปรเซสเซอร์ คอร์โปรเซสเซอร์ หรือแม้แต่เธรด หมายความว่าแทนที่จะเป็น 8 vCPU คุณสามารถเพิ่ม vCPU 2 ตัว (2 ซ็อกเก็ต) โดยมี 4 ตัวต่อซ็อกเก็ต มาดูวิธีกำหนดโปรเซสเซอร์เสมือนเป็นคอร์ในไฮเปอร์ไวเซอร์ต่างๆ กัน และวิธีผูกกับสถาปัตยกรรม NUMA ที่ใช้ในโปรเซสเซอร์รุ่นใหม่

การจัดการ Virtual Core &vCPU ใน KVM

ในเครื่องเสมือน KVM ของฉันที่ใช้ Windows 10 , คอร์เสมือนที่กำหนดทั้งหมดถือเป็นตัวประมวลผลที่แยกจากกัน

ในการใช้ทรัพยากร CPU ทั้งหมดที่จัดสรรให้กับเครื่องเสมือน จะต้องเห็นโปรเซสเซอร์ 8 คอร์หนึ่งตัว, vCPU 2 ตัวที่มี 4 คอร์แต่ละตัว หรือ 1 vCPU ที่มี 4 คอร์ในสองเธรดแทนที่จะเป็น 8 vCPU เรามาลองเปลี่ยนการจัดสรรคอร์เสมือนสำหรับเครื่องเสมือน KVM กัน

ปิดเครื่องเสมือนของคุณ:

# virsh shutdown w10testvm – โดยที่ w10testvm เป็นชื่อเครื่องเสมือนของคุณ

ต่อไปนี้คือแง่มุมต่างๆ ของการจัดการเครื่องเสมือน KVM จากคอนโซลโดยใช้ virsh .

แสดงการกำหนดค่า XML ปัจจุบันของเครื่องเสมือน KVM:

# virsh dumpxml w10testvm

เราต้องการบล็อกที่อธิบายการตั้งค่า VM CPU:

<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>

อย่างที่คุณเห็น 8 vCPU ถูกตั้งค่าไว้ที่นี่ มาเปลี่ยนการกำหนดค่ากันเถอะ:

# virsh edit w10testvm

เพิ่มบล็อกต่อไปนี้หลัง :

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

ที่ไหน:

  • host-passthrough คือโหมดการจำลองที่เครื่องเสมือนเห็นตัวประมวลผลทางกายภาพของโหนดคลัสเตอร์
  • sockets='1' แสดงว่ามี vCPU (ซ็อกเก็ต) หนึ่งตัว
  • cores='4' โปรเซสเซอร์มี 4 คอร์ต่อซ็อกเก็ต
  • threads='2' ieach core มี 2 เธรด

บันทึกไฟล์การกำหนดค่าและเริ่มต้นเครื่องเสมือน เข้าสู่ระบบ Windows 10 guest VM เรียกใช้ Task Manager หรือ Resource Monitor และตรวจสอบว่า Windows เห็นคอร์เสมือนที่จัดสรรไว้ทั้งหมด

การเลือกจำนวน vCPU และคอร์สำหรับเครื่องเสมือน

โปรเซสเซอร์จริงของโฮสต์ Intel(R) Xeon(R) Silver 4114 CPU จะแสดงแทนเสมือนในคุณสมบัติของระบบ

การเลือกจำนวน vCPU และคอร์สำหรับเครื่องเสมือน

นี่คือวิธีที่เราจัดการเพื่อแก้ปัญหาการโหลดจำนวนมากสำหรับ VM เนื่องจากสองคอร์ไม่เพียงพอสำหรับแอปที่จะทำงานอย่างถูกต้อง

การตั้งค่าจำนวนคอร์ต่อ vCPU สำหรับ VMWare VM

คุณสามารถเปลี่ยนวิธีการนำเสนอ vCPU สำหรับเครื่องเสมือน VMWare ได้ในอินเทอร์เฟซ vSphere Client

  1. ปิด VM และเปิดการตั้งค่า
  2. ขยาย CPU ส่วน;
  3. เปลี่ยนการกำหนดค่า VM เพื่อให้แขก OS สามารถเห็นโปรเซสเซอร์ 2 ตัวที่มี 4 คอร์แต่ละตัว เปลี่ยนค่า Cores per Socket ถึง 4 . หมายความว่า guest OS จะเห็นซีพียู 4 คอร์สองตัว (2 ซ็อกเก็ตพร้อม 4 คอร์ต่อซ็อกเก็ต); การเลือกจำนวน vCPU และคอร์สำหรับเครื่องเสมือน
  4. บันทึกการเปลี่ยนแปลงและเรียกใช้ VM

เครื่องเสมือน vCPU และสถาปัตยกรรม NUMA

มีบางแง่มุมเพิ่มเติมของการกำหนด vCPU และคอร์ให้กับเครื่องเสมือนที่คุณต้องเข้าใจ

เมื่อกำหนดจำนวนคอร์ต่อซ็อกเก็ต ตรวจสอบให้แน่ใจว่าคุณมี สถาปัตยกรรม NUMA (ใช้ในซีพียูที่ทันสมัยที่สุด) ไม่แนะนำให้กำหนดคอร์ต่อซ็อกเก็ต (และจำนวน vCPU ทั้งหมด) ให้กับ VM มากกว่าจำนวนคอร์ที่มีอยู่บนฟิสิคัลซ็อกเก็ตของคุณ (โหนด NUMA) เมื่อวางบนโหนด NUMA จริงทางกายภาพ เครื่องเสมือนจะสามารถใช้ RAM ในเครื่องที่รวดเร็วซึ่งมีอยู่ในโหนด NUMA ที่ระบุ มิฉะนั้น กระบวนการจะต้องรอการตอบกลับจากโหนด NUMA อื่น (ซึ่งใช้เวลานานกว่า)

หากคุณกำหนดซ็อกเก็ตเสมือนสองซ็อกเก็ตแยกกันให้กับ VM ไฮเปอร์ไวเซอร์สามารถรันซ็อกเก็ตเหล่านั้นบนโหนด NUMA ที่ต่างกัน ซึ่งจะส่งผลต่อประสิทธิภาพของ VM

หากจำนวน vCPU ที่ต้องการมากกว่าจำนวนคอร์บน 1 ฟิสิคัลซ็อกเก็ต (โหนด NUMA) ให้สร้างซ็อกเก็ตเสมือนหลายตัว (โปรเซสเซอร์) ด้วยจำนวนคอร์ที่จำเป็น นอกจากนี้ ไม่แนะนำให้ใช้โปรเซสเซอร์เป็นเลขคี่ (ควรเพิ่ม 1 vCPU)

ช่วยรักษาประสิทธิภาพของเครื่องเสมือน

การเลือกจำนวน vCPU และคอร์สำหรับเครื่องเสมือน

ตัวอย่างเช่น ขอแนะนำให้ใช้การกำหนดค่าต่อไปนี้สำหรับโฮสต์โปรเซสเซอร์ 2 ตัวที่มี 10 คอร์ต่อซ็อกเก็ต (มีทั้งหมด 40 vCPU รวมถึง Hyperเธรด ) เมื่อคุณกำหนดค่า vCPU สำหรับ VM:

ต้องการหมายเลข vCPU จำนวน Virtual Sockets ในการตั้งค่า VM จำนวนคอร์ต่อโปรเซสเซอร์เสมือนในการตั้งค่า VM
1 1 1
……
10 1 10
11 ไม่เหมาะสม
12 2 6
……
20 2 10
ในเวอร์ชัน ESXi ฟรี คุณไม่สามารถสร้าง VM ที่มี vCPU มากกว่า 8 ตัวได้

ตัวอย่างเช่น VM ที่รัน Microsoft SQL Server 2016 Enterprise Edition ที่มี 16 vCPU (ในการกำหนดค่า 8 Sockets ที่มี 2 Cores ต่อ Socket ) จะมีประสิทธิภาพต่ำกว่าที่ VM ที่มี 2 Sockets x 8 Cores ต่อ Socket .
โปรดทราบด้วยว่าแอปพลิเคชั่นบางตัวได้รับอนุญาตขึ้นอยู่กับจำนวนของซ็อกเก็ตจริง (เหมือนใน SQL Server เวอร์ชันก่อนหน้า) บางครั้งการอนุญาตให้ใช้โปรเซสเซอร์แบบมัลติคอร์ตัวเดียวก็สามารถทำกำไรได้มากกว่าโปรเซสเซอร์หลายตัวที่มีจำนวนคอร์น้อยกว่า

เวอร์ชัน Windows Server สมัยใหม่ได้รับอนุญาตในสภาพแวดล้อมเสมือนในลักษณะพิเศษ นอกจากนี้ยังมีบางแง่มุมของการให้สิทธิ์ใช้งานโปรเซสเซอร์ใน VMWare vSphere