Nätverksprestanda mellan VM i ESXi
Efter ett tag i drift har jag börjat leta prestanda flaskhalsar i min ESXi server. En viktig komponent i en server är ju självklart nätverket och då min setup är en ”all-in-one” lösning med filserver och andra VM i samma maskin så är de är viktigt att nätverket är på topp.
Setup
Moderkrot: Asus Rampage II Extreme, X58
CPU: Intel I7-920 (svårklockad C0 modell)
RAM: 30GB @ 1600Mhz
Chassi: Norco 4020
raidkort: Intel SASUC8I (flashat med LTI, TI firmware)
HDD/SSD: 128GB SSD + 8x 2tb HDD
VM
• FreeBSD - Router med PfSense 2.0.3
• OpenIndiana - Filserver med OpenIndiana + ”Napp-It” mjukvara för att hantera ZFS.
• Ubuntu - Ubuntu server 12.04 där jag kör web och lite andra tjänster på
• Windows - Win7 maskin som jag kör övriga tjänster på. De jag inte orkar eller kan köra på linux.
Disclamer
Jag har ingen direkt utbildning inom nätverk, så rätta mig gärna om jag skriver några felaktigheter.
Bakgrund
Samtliga maskiner (förutom routern) kör med vmxnet3 som virtuellt nätverkskort, kortet är specificerat till 10Gb/s men det finns i teorin ingen övre gräns som jag har fattat det. Så 10 Gb/s är vad man kan förvänta sig att filöverföringar mellan de virtuella maskinerna skall klara.
För att prestandatesta har jag använt iperf.
Jag kör följande med lite olika TCP windows size 64K-2M.
iperf –c 192.168.x.x -w 64K
Detta är resultatet från några av testerna.
Iperf från Win7 till Ubuntu 12.04
0.0-10.0 sec 11.8 Gbytes 10.1 Gbits/s
Iperf mellan Ubuntu 12.04 och Ubuntu 12.04
0.0-10.0 sec 20.8 GBytes 17.9 Gbits/sec
Iperf från OpenIndiana till Ubuntu 12.04
0.0-10.0 sec 3.52 GBytes 3.02 Gbits/sec
Iperf från Ubuntu 12.04 till OpenIndiana
0.0-10.0 sec 8.08 GBytes 6.94 Gbits/sec
Vad jag provat
Två första punkterna har jag följt denna blog.
Jumbo frames
Jumboframes är en "storlek av paket" (aka MTU) för nätverk. Standard är 1,5Kb och med Jumbo frames så kan paketen vara 9Kb stora. Detta skall kunna ge en prestanda ökning men vad jag har sett så hände det inte så mycket för mina maskiner när jag ändrade MTU. Har ändrat på samtliga maskiner och även i ESXi och i den virtuella switchen.disable LSO
En sak som gjorde STOR skillnad var att inte använda mig av LSO. Det står tydligt förklarat i länken ovan vad prestandaförlusten troligtvis beror på och varför man använder det med fysiska kort.CPU prestanda
Här är ett kvarstående problem som jag fortfarande inte löst, men tror att det är någon optimering man kan göra för att minska CPU belastningen och öka nätverksprestandan.
Klicka för "hela" bilden!CPU prestandan då jag först mäter från "Ubuntu 1" till OpenIndiana, sen från "Ubuntu 1" till "Ubuntu 2". I första fallet fick jag som förut ca 6Gb/s (100% CPU) och i andra fallet ~14Gb/s och mycket lägre CPU last.
Problemet
Som vi ser så är prestandan mellan de flesta maskinerna godkänd men från just min filserver (OpenIndiana) maskinen så får jag inte ut den hastighet jag hade önskat.
Någon som har haft samma problem? Är det möjligt att öka prestandan i OpenIndiana och i så fall hur?
Gaming: Asus P8P67, Intel i5-2500k, Asus 7970 DCII, 8gb ram, 300gb velociraptor
Server: Asus Rampage II, Intel i7-980x, 6970 ref, 30gb ram, SASUC8I + 8st 2tb diskar + 1st 128gb SSD