• Digitální příslušenství
  • Server
  • Digitální život
  • Zásady ochrany osobních údajů
  • Kontaktujte nás
  1. Domov
  2. Článek
  3. Problémy s výkonem VirtualBoxu při ladění vícejádrového CPU...

Problémy s výkonem VirtualBoxu při ladění vícejádrového CPU...

Rsdaa 06/01/2022 1147

Řešení problémů s výkonem VirtualBoxu pro vícejádrové CPU

Tento článek podrobně vysvětluje, jak můžete výrazně zlepšit výkon VirtualBoxu na nejnovější generaci vícejádrových procesorů vyladěním VirtualBoxu a nastavení systému, abyste zajistili správnou funkci a překonali problémy s kompatibilitou.

Nízký výkon VirtualBoxu na vícejádrovém procesoru Intel Haswell, IvyBridge, SandyBridge s hypervláknem

Problém s nízkým výkonem

Spuštění vývojového prostředí uvnitř VirtualBox Debian pro obsluhu Magenta s NGiNX odhalil ohromně pomalý výkon, když byl VirtualBox nakonfigurován tak, aby používal více než jedno jádro, jak by to chtěl nastavit každý nadšenec s vícejádrovým CPU poslední generace.

Konfigurace testovacího stroje

Testovací stroj byl vybaven procesorem i7-4500U, který má 2 fyzická jádra, každé se 2 vlákny (pseudojádra), celkem 4 prováděcí vlákna.

Hostitelský operační systém – Windows 7

Hostující OS – Debian 7/NGiNX/Magento/+

Výsledky testovací stolice

Požadavek na jednoduchou stránku phpinfo() reaguje a načte se téměř okamžitě, ale požadavek na backendovou stránku Magento zabral minimálně 5 sekund a někdy to trvalo až do překročení maximální doby provedení 30 sekund. Výkon a konzistence byly tak špatné, že se to nedalo použít.

Až k „jádru“ problémů s výkonem VirtualBox

Jak říká podtitul, jádrem problému je ve skutečnosti alokace jader fyzického CPU do VirtualBoxu. Pseudojádra/vlákna aktivovaná Intel HyperThreadingem nejsou inzerována jako skutečná jádra CPU a to je matoucí VirtualBox při přidělování jader CPU.

Například Intel Core i7-4500U má 2 fyzická jádra a celkem 4 vlákna, což znamená, že každé fyzické jádro může s pomocí technologie HyperThreading provozovat 2 vlákna. Problém je v tom, že vlákno je jako další ruka jádra, ale nemá stejný fyzický zdroj jako skutečné jádro.

Co je horší, VirtualBox ponechává první dvě jádra hostitelskému OS, což jsou ve Windows 7/8 skutečná jádra CPU, a přiděluje další jádra virtuálnímu stroji, což jsou, hádejte, virtuální vlákna.

Virtuální vlákna nabízená HyperThreadingem jsou velmi nenáročná na implementaci, neduplikují skutečné zdroje CPU (Cache, ALU atd.), takže příčina snížení výkonu není divu.

Vyzkoušejte si tento scénář sami Spusťte VirtualBox pod Windows 7/8 na procesoru „2 jádra / 4 vlákna“ a přidělte 2 jádra virtuálnímu počítači v Nastavení/Systém/Procesor. Spusťte virtuální počítač hostujícího OS s nějakou nepřetržitě běžící úlohou, nejlépe něco náročného, ​​abyste viděli dopad lepšího nastavení později Přejděte do Správce úloh/procesů Windows v hostitelském OS, vyhledejte proces VirtualBox.exe, který se zdá být virtuálním počítačem (najdete dva z nich, jeden pro Správce a druhý pro počítač), klikněte pravým tlačítkem a vyberte Nastavit spřažení..Zakažte jádra 3. a 4. a uvidíte, že hostující počítač zamyká nahoruZakažte jádra jedno po druhém a zkontrolujte, jak je ovlivněna funkčnost/výkon TEĎ Vypněte hostující počítač a přejděte do Nastavení /System/Processor a přidělte virtuálnímu počítači pouze jedno jádro Zkontrolujte výrazně lepší výkonOpakujte kroky 3–6 a zkontrolujte výkon

Ladění výkonu jádra procesoru VirtualBox

Řešení a tipy pro zlepšení výkonu VirtualBox

Hlavní oprava

Pokud je to povoleno, zakažte Hyper-Threading v BIOSu počítače Tip 1: Některé notebooky, například značky ASUS, mají vlastní verze BIOSu, které omezují uživatele přístup k tomuto nastavení (obvykle se nachází v nabídce Upřesnit) – HyperThreading lze zakázat pouze systémem BIOS, protože jde o hardwarovou funkci)VirtualBox – přejděte do Nastavení/Systém/Procesor a nastavte stejný počet jader pro hostitele a hosta, jako nyní znovu vidět pouze skutečná jádra

Řešení, pokud nastavení HyperThreading není dostupné

VirtualBox – přejděte do Nastavení/Systém/Procesor a přidělte pouze 1 jádro hostujícímu počítači. Doufejme, že VirtualBox vybere další jádro, které nabízí hostitelský OS Windows, což bude skutečné jádro.

Řešení 2

Pokaždé zkontrolujte/nastavte spřažení procesoru pro proces VirtualBox.exe virtuálního počítače, abyste zajistili běží na fyzickém jádru

Tipy pro maximalizaci výkonu celého systému

Další dolaďovací nastavení VirtualBoxu pro stroj, která mi fungovala:

Systém/základní deska/čipová sada: ICH9Systém/procesor/limit provedení: 100%Systém/akcelerace: Povolit VT-x/AMD-v, Povolit vnořené úložiště Paging/Řadič:SATA/SSD zaškrtnuto

Nezapomeňte také maximalizovat výkon vašeho hardwarového počítače, pokud se jedná o přenosný počítač:

Vyberte profil vysokého výkonu v možnostech napájeníPřizpůsobte profil vysokého výkonu v možnostech napájení a nastavte minimální stav procesoru na 100% Výsledky testovacího stavu po vyřešení zmíněných problémů s výkonem VirtualBox

Výkon je konzistentní a předvídatelný, se stránkami bez mezipaměti backendu Magento kolem 4–5 sekundy.

Přesnější vysvětlení

VCPU jsou vázány přímo na fyzická jádra, ale ne konkrétně na 1 jádro. Pokud vytvoříte virtuální počítač s 1 vCPU, pak tomuto virtuálnímu počítači přidělujete 1 fyzické jádro, kdykoli potřebuje něco zpracovat. Zůstaneme-li u našeho příkladu, znamená to, že teoreticky můžete vytvořit 8 samostatných virtuálních počítačů vCPU a nikdy mezi virtuálními počítači nebudou žádné spory o zdroje. Jakmile se pustíte do virtuálních počítačů s více vCPU, zde se začnete setkávat s problémy. Virtuální počítače s více vCPU vyžadují, aby byla všechna přidělená jádra volná, než může začít zpracování. To znamená, že pokud máte stroj se 2 vCPU, musí být k dispozici 2 fyzická jádra a 4 vCPU vyžaduje 4 fyzická jádra atd.

přidání dalších jader by mohlo zpomalit VM. Důvodem je, že plánovač CPU virtualboxu musí naplánovat přístup k jádru pro VM a musí alokovat všechna jádra přiřazená k vm současně.

Takže například umožňuje použít 4 jádra (nezabýváme se problémem fyzického vs. logického jádra). Řekněme, že máte 4 jádra. Nejprve používáte Ubuntu a Virtualbox, který samozřejmě používá různé procesy. Pokud mezi linuxovým OS a virtualboxem řekněme, že se vždy používají 2 jádra a třetí se používá příležitostně. Nyní máte VM (winxp win7 nezáleží) a má přiřazena 2 jádra. VM musí počkat, dokud nebudou k dispozici 2 jádra, než bude moci zpracovat cokoli, a tím myslím COKOLI. Spuštění programu, reakce na vstup z klávesnice/myši, cokoliv. Takže v tomto nastavení, kdykoli váš skutečný systém (Ubuntu a VirtualBox) používá více než 2 jádra, váš VM musí čekat a čekat a čekat. Tato čekací doba se nazývá doba „CPU Ready“. Spousta informací online o dobách připravenosti CPU.

… nejlepším postupem je vytvořit VM co nejštíhlejší. Začněte na 1 cpu/jádro a zvyšujte pouze v případě potřeby. Pokud je doba spouštění vašeho virtuálního počítače s 1 jádrem rychlejší, pak váš systém nemá dostupné prostředky na to, aby včas naplánoval další, protože všechna přiřazená jádra musí být k dispozici ve stejnou dobu. Někdy můžete uniknout nadměrnému poskytování jiných zdrojů do virtuálního počítače, jako je RAM, a neutrpět takový výpadek výkonu, ale ne vCPU.

Zdroje:

CPU Ready je:

Čas, po který virtuální počítač čeká ve frontě ve stavu připraveném ke spuštění, než může být naplánován na CPU.

To znamená, že virtuální počítač je připraven něco zpracovat, ale musí počkat, protože prostředky CPU, které vyžaduje, nejsou na fyzickém hostiteli dostupné.

Zdroj: http://virtualblocks.wordpress.com/2010/06/22/cpu-ready-over-built-vm-or-over-utilized-host/

Další testování

Abych zjistil, zda jsou problémy způsobeny dobou připravenosti procesoru, provedl jsem na novém počítači následující nový test:

Testovací systém

Intel i7-4710MQ (4 jádra, celkem 8 vláken) Hostitelský systém Windows 7VirtualBOX 4.3.10Debian7 s NGINX

4 přidělené CPU

Výsledky testu ukazují dobu načítání Magento stránka:

První obnoveníDruhé obnoveníTřetí obnovení při opakovaném otevírání a zavírání nabídky Start na hostitelském operačním systému (Windows)

Je snadno vidět, že ponechání hostitelského operačního systému vykonáním zvláštního úkolu, stejně jednoduchého jako mnohokrát otevřít a zavřít nabídku Start, zatímco hostující OS obsluhoval stránku, způsobila další čekací dobu delší než 1 sekundu. To potvrzuje, že problém souvisí s dobou připravenosti CPU.

1 přidělený procesor

Jedno jádro přidělené virtuálnímu počítači vykazuje výrazně zlepšený výkon při načítání stránky, stabilní mezi obnovami, neovlivňuje ho mírné zatížení hostitelského procesoru (jako otevření nabídky Start).

Neexistoval také žádný vliv na výkon mezi I/O APIC a nastavením čipové sady.

I/O APIC a nastavení čipové sady VirtualBoxu

I/O APIC

Z dokumentace VirtualBoxu:

Povolte I/O APIC

Advanced Programmable Interrupt Controllers (APIC) jsou novější hardwarová funkce x86, která v posledních letech nahradila staré programovatelné řadiče přerušení (PIC). S I/O APIC mohou operační systémy používat více než 16 požadavků na přerušení (IRQ), a proto se vyhnout sdílení IRQ pro zvýšení spolehlivosti.

Poznámka: Povolení I/O APIC je vyžadováno pro 64bitové hostované operační systémy, zejména Windows Vista; je také vyžadován, pokud chcete ve virtuálním počítači používat více než jeden virtuální procesor.

Softwarová podpora rozhraní I/O APIC však byla u některých operačních systémů jiných než Windows nespolehlivá. Také použití I/O APIC mírně zvyšuje režii virtualizace, a proto trochu zpomaluje hostující OS.

Upozornění: Všechny operační systémy Windows počínaje Windows 2000 instalují různá jádra podle toho, zda je k dispozici I/O APIC. Stejně jako u ACPI se proto I/O APIC nesmí po instalaci hostujícího OS Windows vypnout. Zapnutí po instalaci však nebude mít žádný účinek.

Kromě toho můžete vypnout rozhraní ACPI (Advanced Configuration and Power Interface), které VirtualBox poskytuje hostujícímu operačnímu systému ve výchozím nastavení. ACPI je aktuální průmyslový standard, který umožňuje operačním systémům rozpoznávat hardware, konfigurovat základní desky a další zařízení a spravovat napájení. Protože všechny moderní počítače tuto funkci obsahují a Windows a Linux ji podporují již léta, je ve VirtualBoxu také standardně povolena. Lze jej vypnout na příkazovém řádku; e viz část nazvaná „VBoxManage modulevm“.


PREV: Jak opravíte server se zadaným názvem hostitele nemohl ...

NEXT: Co je plán údržby serveru a proč je důležitý...

Populární články

Žhavé články

Navigační seznamy

Zpět na začátek