VirtualBox-suorituskykyongelmien ratkaisu moniytimisille suorittimille
Tässä artikkelissa kerrotaan yksityiskohtaisesti, kuinka voit parantaa huomattavasti VirtualBoxin suorituskykyä uusimman sukupolven Multi Core -suorittimissa säätämällä VirtualBoxia ja järjestelmäasetuksia oikean toiminnan varmistamiseksi ja yhteensopivuusongelmien ratkaisemiseksi.
Kehitysympäristön käyttäminen VirtualBox Debianissa Magenton palvelemiseksi NGiNX:n kanssa paljasti valtavan hitaan suorituskyvyn, kun VirtualBox määritettiin käyttämään useampaa kuin yhtä ydintä, kuten kuka tahansa harrastaja, jolla on uusimman sukupolven moniytiminen CPU, aikoi asettaa sen.
Testipenkkikoneen kokoonpanoTestikone oli varustettu i7-4500U-prosessorilla, jossa on 2 fyysistä ydintä, joista jokaisessa on 2 säiettä (pseudoydin), yhteensä 4 suoritussäiettä.
Isäntäkäyttöjärjestelmä – Windows 7
Vieraskäyttöjärjestelmä – Debian 7/NGiNX/Magento/+
Testipenkin tuloksetYksinkertaisen phpinfo()-sivun pyytäminen vastaa ja latautuu lähes välittömästi, mutta Magento-taustasivun pyytäminen kesti vähintään 5 sekuntia ja joskus kesti, kunnes maksimi suoritusaika 30 sekuntia ylitti. Suorituskyky ja johdonmukaisuus olivat niin huonot, että niitä ei voitu käyttää.
Kuten alaotsikko sanoo, ongelman ydin on fyysisen suorittimen ytimien allokointi VirtualBoxille. Intel HyperThreadingin mahdollistamia pseudoytimiä/säikeitä ei mainosteta oikeiksi prosessoriytimiksi, ja tämä hämmentää VirtualBoxia suorittimen ytimien allokoinnissa.
Esimerkiksi Intel Core i7-4500U:ssa on 2 fyysistä ydintä ja yhteensä 4 säiettä, mikä tarkoittaa, että jokainen fyysinen ydin voi ajaa kahta säiettä HyperThreading-tekniikan avulla. Ongelmana on, että lanka on kuin ylimääräinen ytimen käsi, mutta sillä ei ole samaa fyysistä resurssia kuin todellisella ytimellä.
Pahempaa on, että VirtualBox jättää kaksi ensimmäistä ydintä isäntäkäyttöjärjestelmälle, jotka Windows 7/8:ssa ovat todellisia CPU-ytimiä, ja varaa seuraavat ytimet virtuaalikoneen, jotka, arvatkaa mitä, ovat virtuaalisia säikeitä.
HyperThreadingin tarjoamat virtuaaliset säikeet ovat erittäin kevyitä toteutuksessa, eivätkä ne kopioi todellisia prosessoriresursseja (välimuisti, ALU jne.), joten suorituskyvyn heikkenemisen syy ei ole ihme.
Testaa tätä itse skenaarioSuorita VirtualBox Windows 7/8 -käyttöjärjestelmässä "2 ydintä / 4 säiettä" -suorittimella ja varaa 2 ydintä virtuaalikoneelle kohdassa Asetukset/Järjestelmä/Prosessori. Käynnistä Guest OS -virtuaalikone jollakin jatkuvasti käynnissä olevalla tehtävällä. jotain vaativaa nähdäksesi parempien asetusten vaikutuksen myöhemmin. Siirry isäntäkäyttöjärjestelmän Windows Tehtävienhallintaan/Prosesseihin ja etsi VirtualBox.exe-prosessi, joka näyttää olevan virtuaalikone (löydät niitä kaksi, yksi Managerille ja yksi koneelle), napsauta hiiren kakkospainikkeella ja valitse Set Affinity.. Poista käytöstä 3. ja 4. ytimet, niin näet, että vieraskone lukittuu. Poista ytimet käytöstä yksitellen ja tarkista, miten se vaikuttaa toimintoihin/suorituskykyyn NYT Sammuta vieraskone ja siirry kohtaan Asetukset /Järjestelmä/Prosessori ja varaa vain yksi ydin virtuaalikoneen.Tarkista huomattavasti parantunut suorituskyky Toista vaiheet 3–6 ja tarkista suorituskykyVirtualBox CPU Core Performance Tuning
Muut VirtualBox-hienosäätöasetukset koneelle, jotka toimivat minulle:
Järjestelmä/emolevy/piirisarja: ICH9Järjestelmä/prosessori/suorituskanta: 100 % järjestelmä/kiihtyvyys: Ota VT-x/AMD-v käyttöön, ota käyttöön sisäkkäinen sivutallennus/ohjain: SATA/Solid State Drive tarkistettuÄlä unohda maksimoida myös laitteistosi suorituskykyä, jos se on kannettava tietokone:
Valitse High Performance -profiili Virta-asetuksista. Mukauta korkean suorituskyvyn profiilia Virranhallinta-asetuksissa ja määritä prosessorin vähimmäistilaksi 100 % Testipenkkitulokset mainittujen VirtualBox-suorituskykyongelmien ratkaisemisen jälkeenSuorituskyky on johdonmukaista ja ennustettavaa, sillä välimuistiin tallentamattomia Magento-taustaohjelmia on noin 4–5. sekuntia.
vCPU:t on sidottu suoraan fyysisiin ytimiin, mutta ei erikseen yhteen ytimeen. Jos luot virtuaalikoneen, jossa on yksi vCPU, varaat yhden fyysisen ytimen kyseiselle VM:lle aina, kun sen on käsiteltävä jotain. Esimerkissämme pitäen tämä tarkoittaa, että voit teoriassa luoda 8 yksittäistä vCPU-virtuaalikonetta, eikä virtuaalikoneiden välillä koskaan ole resurssikiistaa. Kun alat vaeltaa usean vCPU:n virtuaalikoneisiin, alat törmätä ongelmiin. VM:t, joissa on useita vCPU:ita, edellyttävät, että kaikki varatut ytimet ovat vapaita ennen kuin käsittely voidaan aloittaa. Tämä tarkoittaa, että jos sinulla on 2 vCPU-konetta, käytettävissä on oltava 2 fyysistä ydintä ja 4 vCPU vaatii 4 fyysistä ydintä jne.
Ydinten lisääminen voisi hidastaa virtuaalikonetta. Syynä on se, että virtualboxin suorittimen ajoittimen on ajoitettava pääsy virtuaalikoneen ytimeen ja allokoitava kaikki virtuaalikoneelle osoitetut ytimet samanaikaisesti.
Sallitaan siis esimerkiksi käyttää 4 ydintä (ei käsitellä fyysistä vs. loogista ydinongelmaa). Oletetaan, että sinulla on 4 ydintä. Ensinnäkin käytät Ubuntua ja Virtualboxia, jotka tietysti käyttävät erilaisia prosesseja. Jos linux-käyttöjärjestelmän ja virtualboxin välillä, sanotaan, että 2 ydintä on aina käytössä ja kolmas käytetään satunnaisesti. Nyt sinulla on virtuaalikone (winxp win7:llä ei ole väliä) ja sille on määritetty 2 ydintä. Virtuaalikoneen on odotettava, kunnes 2 ydintä on saatavilla, ennen kuin se voi käsitellä mitään, ja tarkoitan MITÄÄN. Ohjelman käynnistäminen, näppäimistön/hiiren syöttöön vastaaminen, mitä tahansa. Joten tässä asennuksessa varsinainen järjestelmäsi (Ubuntu ja VirtualBox) käyttää yli 2 ydintä VM:n on odotettava, odotettava ja odotettava. Tätä odotusaikaa kutsutaan "CPU Ready" -ajaksi. Paljon tietoa verkossa suorittimen valmiusajoista.
… paras käytäntö on tehdä virtuaalikoneesta mahdollisimman kevyt. Aloita 1 prosessorilla/ydin ja lisää vain tarvittaessa. Jos VM-käynnistysaikasi on nopeampi yhdellä ytimellä, järjestelmälläsi ei ole käytettävissä olevia resursseja ajoittaa enemmän ajoissa, koska kaikkien määritettyjen ytimien on oltava käytettävissä samanaikaisesti. Joskus voit päästä eroon muiden resurssien, kuten RAM:n, liiallisesta provisiosta virtuaalikoneelle, etkä kärsi tällaisesta suorituskyvystä, mutta et vCPU:ista.
Lähteet:
CPU-valmius on:
Aika, jonka virtuaalikone odottaa jonossa toimintavalmiissa tilassa, ennen kuin se voidaan ajoittaa suorittimeen.
Tämä tarkoittaa, että virtuaalikone on valmis käsittelemään jotain, mutta sen on odotettava, koska sen tarvitsemat suoritinresurssit eivät ole käytettävissä fyysisessä isännässä.
Lähde: http://virtualblocks.wordpress.com/2010/06/22/cpu-ready-over-built-vm-or-over-utilized-host/
Tein seuraavan uuden testin uudella koneella selvittääkseni, johtuvatko ongelmat suorittimen valmiusajoista:
Testitulokset näyttävät latausajan Magento-sivu:
Ensimmäinen päivitysToinen päivitysKolmas päivitys, kun avataan ja suljetaan toistuvasti aloitusvalikko isäntäkäyttöjärjestelmässä (Windows)Voidaan helposti nähdä, että isäntäkäyttöjärjestelmän pitäminen ylimääräisenä tehtävänä, aivan yhtä helppoa kuin aloitusvalikon avaaminen ja sulkeminen monta kertaa, Vieraskäyttöjärjestelmän palvellessa sivua aiheutti yli 1 sekunnin ylimääräisen odotusajan. Tämä vahvistaa, että ongelma liittyy suorittimen valmiusaikoihin.
VM:lle varattu yksi ydin osoittaa huomattavasti paremman sivun lataussuorituskyvyn, vakaa päivitysten välillä, eikä pieni isäntäprosessorikuormitus vaikuta (kuten aloitusvalikon avaaminen).
I/O APIC:n ja piirisarjan asetusten välillä ei myöskään ollut vaikutusta suorituskykyyn.
VirtualBox-dokumentaatiosta:
Ota I/O APIC käyttöön
Advanced Programmable Interrupt Controllers (APIC) on uudempi x86-laitteistoominaisuus, joka on korvannut vanhat ohjelmoitavat keskeytysohjaimet (PIC) viime vuosina. I/O APIC:n avulla käyttöjärjestelmät voivat käyttää yli 16 keskeytyspyyntöä (IRQ) ja välttää siten IRQ:n jakamisen luotettavuuden parantamiseksi.
Huomaa: I/O APIC on otettava käyttöön 64-bittisissä vieraskäyttöjärjestelmissä, erityisesti Windows Vistassa. se vaaditaan myös, jos haluat käyttää useampaa kuin yhtä virtuaalisuoritinta virtuaalikoneessa.
I/O APIC:iden ohjelmistotuki on kuitenkin ollut epäluotettava joissakin muissa käyttöjärjestelmissä kuin Windowsissa. Lisäksi I/O APIC:n käyttö lisää hieman virtualisoinnin yleiskustannuksia ja siten hidastaa hieman vieraskäyttöjärjestelmää.
Varoitus: Kaikki Windows-käyttöjärjestelmät Windows 2000:sta alkaen asentavat eri ytimiä sen mukaan, onko I/O APIC saatavilla. Kuten ACPI:n kohdalla, I/O APIC:tä ei siksi saa sammuttaa Windows-vieraskäyttöjärjestelmän asennuksen jälkeen. Sen käynnistämisellä asennuksen jälkeen ei kuitenkaan ole vaikutusta.
Lisäksi voit poistaa käytöstä ACPI (Advanced Configuration and Power Interface), jonka VirtualBox esittää vieraskäyttöjärjestelmälle oletuksena. ACPI on nykyinen alan standardi, jonka avulla käyttöjärjestelmät voivat tunnistaa laitteistot, määrittää emolevyt ja muut laitteet sekä hallita virtaa. Koska kaikki nykyaikaiset tietokoneet sisältävät tämän ominaisuuden ja Windows ja Linux ovat tukeneet sitä jo vuosia, se on oletusarvoisesti käytössä myös VirtualBoxissa. Se voidaan kytkeä pois päältä komentoriviltä; Katso kohta "VBoxManage modifyvm".
PREV: Kuinka korjaat palvelimen määritetyllä isäntänimellä, jota ei voitu...
NEXT: Mikä on palvelimen ylläpitosuunnitelma ja miksi se on tärkeä ...