Spravujte počet vCPU a jader ve virtuálním stroji

Při vytváření virtuálních počítačů na různých hypervizorech (VMWare, KVM, Hyper-V atd.) Si můžete všimnout, že virtuální stroj někdy neuvidí všechna virtuální jádra, která mu byla přidělena (vCPU). V našem případě bylo virtuálnímu stroji KVM přiděleno 8 vCPU, na kterém byl nainstalován Windows 10. Nicméně Windows definovala tato jádra jako samostatné procesory, z nichž lze použít pouze 2 vCPU.

Obsah:

  • Virtuální stroj Windows 10 nevidí všechna jádra
  • Počet podporovaných procesorů v systému Windows 10
  • Správa virtuálních jader a vCPU v KVM
  • Konfigurace virtuálních procesorů a počtu jader v VMWare
  • NUMA architektura a virtuální vCPU

Virtuální stroj Windows 10 nevidí všechna jádra

Pokud otevřete Správce zařízení Windows, můžete se ujistit, že jsou všechna vybraná jádra viditelná jako 8 samostatných virtuálních procesorů typu Virtuální procesor QEMU verze 2.5.

Ve vlastnostech systému Windows 10 (Počítač -> Vlastnosti) a ve Správě úloh je zároveň vidět, že v počítači jsou k dispozici pouze 2 virtuální procesory QEMU..

To znamená, že bez ohledu na to, kolik virtuálních jader přidáte, Windows 10 může stále používat pouze dvě. Zároveň sousední virtuální server s Window Server 2016 na stejném hypervisoru vidí všech 16 vCPU, které mu byly přiděleny.

Počet podporovaných procesorů v systému Windows 10

Problém je v tom, že v edicích desktopů Windows (Windows 10 / 8.1 / 7) existuje omezení maximální počet fyzických procesorů (soketů), který počítač může použít:

  • Windows 10 Home - 1 CPU
  • Windows 10 Professional - 2 CPU
  • Windows 10 Workstation - až 4 CPU
  • Windows Server 2016 - až 64 procesorů

Toto omezení se však nevztahuje na jádra. I.e. pro lepší výkon můžete použít procesor se spoustou jádra. Většina hypervizorů může poskytovat vCPU ve formě procesorů, procesorových jader nebo dokonce vláken. I.e. namísto 8 virtuálních CPU můžete poskytnout vCPU ve formě 2 soketů se 4 jádry v každém. Podívejme se, jak rozlišit virtuální procesory ve formě jader v různých virtualizačních systémech a jak je propojit s architekturou NUMA používanou v moderních procesorech..

Správa virtuálních jader a vCPU v KVM

V mém virtuálním stroji Kvm c Windows 10, všechna přiřazená virtuální jádra jsou považována za samostatné procesory.

Aby bylo možné využívat všechny prostředky CPU přidělené virtuálnímu stroji, je nutné, aby virtuální počítač neviděl 8 procesorů, ale jeden 8jádrový procesor, 2 procesory se 4 jádry nebo 1 procesor se 4 jádry se 2 vlákny. Zkusme změnit způsob, jakým jsou VM přiděleny VM na KVM.

Vypněte virtuální počítač:

# virsh shutdown server.vpn.ru - kde server.vpn.ru je název virtuálního počítače.

Funkce správy virtuálních počítačů v KVM z konzoly serveru pomocí virsh.

Vytiskněte aktuální konfiguraci XML virtuálního stroje KVM:

# virsh dumpxml server.vpn.ru

Zajímá nás blok s popisem procesorů:

8 1000 / strojní hvm        

Jak vidíte, právě jsme určili 8 vCPU. Změna konfigurace:

# virsh edit server.vpn.ru

A poté přidat:

   

Kde:

  • host-passsthrough - emulační režim, ve kterém se na virtuálním stroji zobrazí virtuální procesor klastrového uzlu (uzlů).
  • sockets = '1' - uveďte, že procesor 1
  • jádra = '4' - indikují, že procesor má 4 jádra
  • thread = '2' - naznačují, že máme 2 vlákna

Uložte konfigurační soubor a spusťte VM. Přihlaste se k hostujícímu VM pomocí systému Windows 10 a ve Správci úloh nebo Sledování zdrojů zkontrolujte, zda operační systém vidí všechna vybraná virtuální jádra.

Také vlastnosti systému nyní začaly zobrazovat fyzický procesor hostitele I.ntel (R) Xeon® Silver 4114 CPU, není virtuální.

Takže se nám podařilo vyřešit problém se zatížením VM, protože dvě jádra nestačila pro plnou aplikaci.

Konfigurace virtuálních procesorů a počtu jader v VMWare

Způsob, jakým je vCPU prezentován pro virtuální stroj VMWare, lze změnit z rozhraní klienta vSphere.

  1. Vypněte VM a otevřete jeho nastavení;
  2. Rozbalte sekci CPU;
  3. Změňte konfiguraci VM tak, aby hostující OS viděl 2 procesory se 4 jádry. Změňte hodnotu Jádra na patici 4. To znamená, že hostující OS uvidí dva čtyřjádrové procesory (2 sokety se 4 jádry);
  4. Uložte změny a spusťte VM.

NUMA architektura a virtuální vCPU

Existuje několik dalších aspektů přiřazení vCPU a kernelu virtuálním strojům, kterým musíte porozumět..

Při přiřazování jader na soketu zvažte NUMA architektura (používá se ve většině moderních procesorů). Nedoporučuje se přiřadit vašemu VM počet jader na soketu (a celkový počet vCPU) vyšší než počet jader dostupných na vašem fyzickém soketu / procesoru (uzel NUMA). Při umístění do jediného fyzického uzlu NUMA bude virtuální počítač schopen používat rychlou místní RAM dostupnou v konkrétním uzlu NUMA. Jinak, pro dokončení operace, procesy budou muset čekat na odpověď z jiného uzlu NUMA (což je poněkud delší).

Pokud VM přiřadíte dvě samostatné virtuální sokety, pak je hypervisor může spustit v různých uzlech NUMA. To není nejlepší způsob, jak ovlivnit výkon VM.

Pokud počet požadovaných vCPU překročí počet jader na 1 fyzickém soketu (uzel NUMA), musíte vytvořit několik virtuálních soketů (procesorů) s požadovaným počtem jader. Také není vhodné používat lichý počet procesorů (je lepší přidat 1 vCPU)

Tím se ušetří výkon virtuálního počítače..

Například pro 2 hostitele procesorů s 10 jádry (je k dispozici celkem 40 vCPU) Hyper-Vlákno), při konfiguraci vCPU pro VM je optimální použít tyto konfigurace:

Požadované množství vCPUPočet virtuálních soketů v nastavení VMPočet jader ve virtuálním procesoru v nastavení VM
111
...
10110
11Není optimální
1226
...
20210
Ve bezplatné verzi ESXi nemůžete vytvářet virtuální počítače s více než 8 vCPU.

Například VM s Microsoft SQL Server 2016 Enterprise Edition 16 vCPU v konfiguraci 8 soketů se 2 jádry budou pracovat horší než v konfiguraci 2 soketů s 8 jádry.

Nezapomeňte také, že některé aplikace jsou licencovány na fyzických soketech (jako tomu bylo u starších verzí serveru SQL). Někdy je pro vás jen výhodnější licencovat jeden vícejádrový procesor než několik procesorů s menším počtem jader.

Moderní verze systému Windows Server jsou licencovány ve virtualizačním prostředí zvláštním způsobem. Ve VMWare vSphere jsou také funkce pro licencování procesorů.