2011-12-09

Hur lägger man till vCPU-kärnor istället för vCPUer på en VM i XenServer?

Ja. Precis... hur gör man för att lägga till kärnor istället för virtuella CPUer?

Vi börjar med varför man vill göra detta.
Olika operativsystem har olika begränsningar på antal CPUer som de kan hanter.
Exempelvis så kan inte Windows 2003 standard edition hantera mer än 4st CPUer. En Windows 7 Ultimate hanterar bara 2st CPUer osv.
Gemensamt för alla dessa är att de dock kan hantera mycket fler CPU-kärnor ärn CPUer...

I XenServer när vi tilldelar en vCPU till en maskin så motsvarar det en kärna på serverhosten, men i VMen så uppfattar operativet det som om det vore en CPU med en kärna.
När vi sedan lägger till en till vCPU till samma maskin så uppfattas det av av operativet i VMen som att nu finns det två CPUer med varderar en kärna...

Kikar vi då på en helt vanlig Windows 2003 (eller för all del 2008) standard edition så är maxgränsen för en sådan är 4st CPUer.

Så säg att jag har en fysisk burk Windows 2008 Standard edition med 2st Quad-core CPUer. Alltså har servern 8st CPU kärnor att leka med.
Jag kör XenConvert på denna (eller nått liknande) och flyttar in den i XenServer. Där vill jag så klart att servern skall ha motsvarande prestanda som när den var fysisk och därför tilldelar jag den 8st vCPUer... dock kommer Operativsystemet i den virtuella maskinen bara att hitta 4st virtuella CPUer.

Så vad kan man göra?`
Man kan säga till XenServer att vi har ett visst antal cores per socket... i fallet ovan skulle vi kunna säga till den virtuella maskinen att den skall se de 8 vCPUerna som 2st processorer med 4 kärnor vardera.

Hur man gör detta är beskrivet i denna knowledge base artikel hos Citrix: http://support.citrix.com/article/CTX126524

Men för att göra detta till ett litet bättre exempel så tänkte jag visa hur det går att göra. :)
Vad man skall tänka på är att inte sätta högre värden på "Cores-per-socket" än storleken på NUMA-noderna på servern... Gör man det så kommer man med stor sannorlikhet få riktigt kass prestanda på sin maskin (har tyvärr inte kunnat verifierat detta i produktion dock, jag har ingen maskin här med den typen av last).

Nåja.
Förutättningar för exemplet:
- Servernamn: win2008std
- Se till att VMen är avstängd.

Sedan så startar jag SSH mot servern och börjar med att ta fram UUID på VMen:

Nästa steg är att sätta hur många VCPUEr den skall ha med "xe vm-param-set platform:cores-per-socket=4 uuid=67f7b535-b538-5ea1-f2d0-63f46ec46ccd"

När jag gjort detta sätter jag hur många vCPUs XenServer skall tilldela både som max och vid uppstart.
"xe vm-param-set VCPUs-max=8 uuid=67f7b535-b538-5ea1-f2d0-63f46ec46ccd"
och
"xe vm-param-set VCPUs-at-startup=8 uuid=67f7b535-b538-5ea1-f2d0-63f46ec46ccd"
När jag är klar ser hela raddan ut så här:

klart!!

När maskinen sedan startas upp så kommer den att tro att den har 2st CPUer med 4 kärnor vardera.

Ovanstående är gjort i XenServer 6.0.
Jag vet att artikeln bara nämner äldre versioner. Ett annat fel i artikeln är att det sista kommandot saknar "uuid". Jag har påpekat detta till Citrix, vi får se när de hinner med att uppdatera den. :)


Är man nyfiken på hur man gör detta i VMware så kikar man här:
http://diversetips.blogspot.com/2011/12/vmware-approppa-hur-lagger-man-till.html

Inga kommentarer:

Skicka en kommentar

Related Posts Plugin for WordPress, Blogger...