Bättre nätverksprestanda i FreeBSD under VMware

12 Dec 2020

Jag har börjat göra mig av med alla virtuella servrar som kör CentOS7 efter att Red Hat beslutat sig för att döda CentOS i den form det existerar idag. Jag hadesedan tidigare bestämt mig för att lämna CentOS och Linux i allmänhet som plattform för mina virtuella maskiner och istället köra det mesta på FreeBSD, och även om CentOS 7 kommer stödjas med uppdateringar fram till 2024 så har jag satt igång och migrerat över funktion efter funktion och även om jag har ett antal servrar kvar att migrera till FreeBSD så går det stadigt framåt. Alltid något, som det brukar heta.

Large Recieve Offload

FreeBSD 12.2, som jag kör som version i mina virtuella FreeBSD-servrar, har fungerat riktigt stabilt under VMware ESXi 6.5, men jag funderade ändå på om det gick att vässa prestanda lite på maskinerna. Jag hade en svag känsla av att jag kunde få ut mer prestanda när det gällde nätverkstrafiken, och jodå, det kunde jag.

Genom att först installera Open VM Tools på varje server, därefter växla över till VMXNet3 som nätverkskort för varje maskin och slutligen slå på en funktion kallad LRO, eller Large Receive Offload, så kunde jag få upp hastigheten ordentligt. Med VMXNet3 får varje virtuell maskin 10Gbit/s som nätverkshastighet inne i VMware’s egna nätverksstack, men utan lro fann jag att jag inte kunde få ut särskilt bra prestanda med FreeBSD 12.2.

Här resultaten från ett test med Iperf3 mellan en FreeBSD 12.2-server som har lro påslaget och en annan som inte har det:

[ 5] local 10.0.1.83 port 45935 connected to 10.0.1.201 port 5201
[ ID] Interval Transfer Bitrate Retr Cwnd
[ 5] 0.00-1.00 sec 109 MBytes 915 Mbits/sec 0 1.34 MBytes
[ 5] 1.00-2.00 sec 112 MBytes 942 Mbits/sec 0 1.42 MBytes
[ 5] 2.00-3.00 sec 112 MBytes 941 Mbits/sec 0 1.45 MBytes
[ 5] 3.00-4.00 sec 112 MBytes 941 Mbits/sec 0 1.49 MBytes
[ 5] 4.00-5.00 sec 112 MBytes 942 Mbits/sec 0 1.49 MBytes
[ 5] 5.00-6.00 sec 112 MBytes 941 Mbits/sec 0 1.51 MBytes
[ 5] 6.00-7.00 sec 112 MBytes 942 Mbits/sec 0 1.51 MBytes
[ 5] 7.00-8.00 sec 112 MBytes 941 Mbits/sec 0 1.51 MBytes
[ 5] 8.00-9.00 sec 112 MBytes 941 Mbits/sec 0 1.51 MBytes
[ 5] 9.00-10.00 sec 112 MBytes 941 Mbits/sec 0 1.51 MBytes

[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-10.00 sec 1.09 GBytes 939 Mbits/sec 0 sender
[ 5] 0.00-10.01 sec 1.09 GBytes 937 Mbits/sec receiver

Här resultatet mellan samma servrar när båda har lro påslaget:

[ 5] local 10.0.1.83 port 14664 connected to 10.0.1.202 port 5201
[ ID] Interval Transfer Bitrate Retr Cwnd
[ 5] 0.00-1.00 sec 1.76 GBytes 15.1 Gbits/sec 0 1.58 MBytes
[ 5] 1.00-2.00 sec 2.38 GBytes 20.5 Gbits/sec 0 1.77 MBytes
[ 5] 2.00-3.00 sec 2.47 GBytes 21.2 Gbits/sec 0 1.77 MBytes
[ 5] 3.00-4.00 sec 2.44 GBytes 20.9 Gbits/sec 0 1.77 MBytes
[ 5] 4.00-5.00 sec 2.50 GBytes 21.5 Gbits/sec 0 1.77 MBytes
[ 5] 5.00-6.00 sec 2.47 GBytes 21.3 Gbits/sec 0 1.77 MBytes
[ 5] 6.00-7.00 sec 2.38 GBytes 20.5 Gbits/sec 0 1.77 MBytes
[ 5] 7.00-8.00 sec 2.45 GBytes 21.0 Gbits/sec 0 1.77 MBytes
[ 5] 8.00-9.00 sec 2.48 GBytes 21.3 Gbits/sec 0 1.77 MBytes
[ 5] 9.00-10.00 sec 2.47 GBytes 21.2 Gbits/sec 0 1.77 MBytes

[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-10.00 sec 23.8 GBytes 20.5 Gbits/sec 0 sender
[ 5] 0.00-10.04 sec 23.8 GBytes 20.4 Gbits/sec receiver

Så här gör du

Att installera Open VM Tools i FreeBSD och därefter slå på lro är enkelt.

Börja med att leta rätt på Open VM Tools:

pkg search open-vm-tools-nox11<br /> open-vm-tools-nox11-11.1.5,2 Open VMware tools for FreeBSD VMware guests

Installera det:

pkg install open-vm-tools-nox11-11.1.5,2

När installationen är klar redigerar du /etc/rc.conf och lägger till följande rader:

<br /> ifconfig_vmx0="inet 10.0.1.83 netmask 255.255.255.0 lro"<br /> defaultrouter="10.0.1.1"<br /> sshd_enable="YES"<br /> vmware_guest_vmblock_enable="YES"<br /> vmware_guest_vmhgfs_enable="NO"<br /> vmware_guest_vmmemctl_enable="YES"<br /> vmware_guest_vmxnet_enable="YES"<br /> vmware_guestd_enable="YES"<br />

Givetvis byter du ut värden för IP-adress, nätmask och router mot dina egna värden. Stäng därefter av servern, ta bort det gamla E1000-nätverkskortet och lägg till ett nytt som du sätter till VMXNet3. Har du inte rört till det alldeles kommer din maskin starta upp igen som vanligt och nu har du betydligt bättre nätverksprestanda mot FreeBSD 12.2.