vNIC performance: VMXNET3 vs E1000, Linuxon, part 1

Nemreg felmerult hogy pontosan mekkora savszelesseget is bir egy Linuxos VM. Egy becslest tudtam mondani, meg egy listat olyan tenyezokkel, amik ezt befolyasolhatjak. Pl.:

  • vNIC type – reszletesen kesobb
  • VM CPU – core-ok szama
  • a bejart halozati utvonal – pl. azonos hoston futo VM-ek kozott, vagy kulonbozo hostokon futo VM-ek kozotti kapcsolat, esetleg tobb switchen at
  • ha kulonbozo hostokon futo VM-ek kozott, akkor a pNIC-ek tipusa
  • Guest OS  – nem mindegyik tipusu vNIC tamogatott az osszes OS-en
  • egyeb guest OS beallitasok

sw

vNIC tipusok

A kovetkezo vNIC tipusok leteznek vSphere-ben:

  • Vlance: Emulalt AMD 79C970 PCnet32 adapter. 10Mbps, 32 bites regebbi OS-ek eseteben, ma mar lehetoleg keruljuk.
  • VMXNET: az elso verzioja a VMware paravirtualizalt halozati kartyajanak, aminek nincs fizikai megfeleloje. VMware Tools telepitese szukseges a hasznalathoz
  • Flexible: a fenti ket adapter kozott valaszt: VM boot alatt Vlance eszkozket latszik, boot utan ha a Guest OS rendelkezik VMware Tools-al, akkor VMXNET-re cserelodik, ha nem, akkor marad a Vlance adapter.
  • E1000: Emulalt Intel 82545EM GbE NIC. az elmult 10-12 evben megjelent OS-ekben megtalalhato a driver.
  • E1000e: Szinten egy emulalt adapter, az Intel 82574 GbE NIC. Linuxok szamara nem elerheto, Windows 8 / Server 2012 es VM HW version 8 szukseges hozza.
  • VMXNET 2: Az elso generacio tovabbfejlesztese: Jumbo Frame, TSO, TCP/IP Checksum Offload feature-ok. Szinten szukseges hozza VMware Tools, csak nehany Guest OS eseten hasznalhato.
  • VMXNET 3: A legfrissebb paravirtualizalt vNIC, 10GbE. Az elozokon tul az uj funkciok: multiqueue tamogatas (RSS), IPv6 offload, MSI/MSI-X, NAPI, LRO stb. Bovebben: a Performance Evaluation of VMXNET3 Virtual Network Device c. dokisban.

Linuxok szamara (Debian 8, 32bit)  nem erheto el az osszes vNIC. vSphere Clientben / Web Client-ben nem is lehet valtoztatni adapter tipust (csak torles es uj hozzaadasaval) de PowerCLI-bol lehetseges:

> Get-VM myVM | Get-NetworkAdapter |?{$_.NetworkName -like "sajatnetw*"} | Set-NetworkAdapter -Type Vmxnet3 -Confirm:$false

Ha a fenti vNIC listabol egy nem hasznalhatot valasztunk (pl. e1000e), akkor kapjuk a hibauzenetet. (nagyithato)

powercli-e1000e

Ebbol az is kiderul hogy a ‘debian6guest’ OS szamara (Debian 6-7-8)  csak az e1000 es a VMXNET3 tipusu vNIC erheto el. (bovebben VirtualNetworkAdapterType cmd) Kis trukkozessel sikerult elerni, hogy a Flexible adapter is mukodjon (‘otherLinuxGuest’ beallitas mellett), igy kaptunk egy Vlance adaptert. A kitero utan akkor kovetkezzenek a meresek

Kornyezet

  • VM: 2x Debian8, 4x vCPU, 4GB RAM, VMware Tools telepitve
  • ESXi Host: 2x Fujitsu RX300 S6 @2x E5630 CPUs, 1GbE pNICs
  • vSphere ver: 5.5.0, 2718055

A mereshez az iperf nevu tool-t hasznaltam. Egyik VM-en server, mig a masikon client modba inditjuk, amivel kapcsolodunk a serverhez. Minden esetben TCP forgalmat generaltam.

Server oldalon tehat:

# iperf -s

Client-en:

# iperf -c 192.168.13.52 -n 2200000000 -V

Tesztesetek

1. Azonos hoston futo VM-ek kozotti meres.  Ekkor a halozati forgalom nem lep ki a fizikai halozatra, a VMkernel-en belul tortenik a switch-eles. Ekkor a VMware virtual I/O stack-jenek a teljesitmenyet is megmerhetjuk egy fejlett vNIC hasznalataval.

hoston-belul

2. Kulon hostokon futo VM-ek kozotti meres. A halozati forgalom kilep a fizikai vilagba a pNIC-en keresztul a fizikai switchekre. Azt mar most lathatjuk hogy ebben az esetben nem fogunk 1Gbps-nel nagyobb savszelesseget merni, hiszen a hostban 1Gbps pNIC-ek talalhatoak.

hostok-kozott

A harmas szorzo

Mivel a Debian 8 legalisan az E1000 es a VMXNET 3 tipusu vNIC-ek mellett meg a Flexible (Vlance) adaptert tudja hasznalni, ezert 2×3, osszesen 6 scenarionk lesz. Egy vNIC csere utan a kovetkezo paranccsal tudjuk ellenorizni, hogy a Guest OS tenyleg mas tipusu vNIC-et lat:

# dmesg | grep eth

Amit kaphatunk:

  • Flexible. Latszik hogy vlance modban mukodik, hiszen egy emulalt AMD 79C970 adapter-t lat a Guest OS. (Habar a VMware Tools fel lett telepitve, valoszinuleg a Linuxos verzio nem rendelkezik az elso generacios VMXNET driverrel)

vlance

  • E1000. Az emulalt intel GbE vezerlot lathatjuk.

e1000

  • VMXNET3: A paravirtualizalt adapter 10 GbE vNIC-nek hiszi magat, meglatjuk mit tud.

vmxnet3

Meresi eredmenyek

Altalaban mind a 6 esetben legalabb ketszer mertem, de inkabb tobbszor es azok atlagat szamoltam. Egy iperf kimenet igy fest:

iperf-pelda

Az eredmenyek tablazatban

eredmeny

…es grafikonon:

linux-graf

Konkluzio

  • Ha lehet hasznaljunk VMXNET3-as adaptert, boduletes savszelessegre kepes, ha mindket VM azonos hoston fut. Egesz konkretan 20,9 Gbps, atlagban. Erdemes DRS rule-okkal egymashoz kotni azokat a VM-eket, amelyek egymas kozott nagy forgalmat bonyolitanak.
  • Ha a ket VM kulonbozo hostokon fut es a hostokban 1GbE pNIC-ek uzemelnek, akkor savszelesseg szempontjabol mindegy hogy VMXNET3, vagy E1000 vNIC-et hasznalunk, hiszen elobb futunk bele a pNIC 1Gbps limitjebe.
  • Egeszen hatekonyak a virtualis adapterek, a fizikai kartyak elmeleti maximumanak a 92%-at ki tudtak hajtani ugy, hogy mellettuk a hostokon nehany tovabbi VM is uzemelt kozben.
  • A Flexible (Vlance) adapter is meglepetest okozott, annak ellenere hogy 10 Mbps elmeleti maximumot specifikaltak, azonos hoston 335Mbps-re is kepes.
  • Ugyanez igaz az E1000 adapterre: 1Gbps elmeleti helyett 9,24Gbps-et is tud.
  • Szinten, VMXNET3: 10Gbps modban 20,9Gbps-re is kepes.
Advertisements
This entry was posted in Uncategorized and tagged , , , , , , , , . Bookmark the permalink.

One Response to vNIC performance: VMXNET3 vs E1000, Linuxon, part 1

  1. Pingback: vNIC performance: Windows 2012R2, part 2 | vThing

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s