User Tools

Site Tools


documentation:technical_docs:performance

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
documentation:technical_docs:performance [2019/12/27 00:18] – [Disabling Hyper Threading (HT)] olivierdocumentation:technical_docs:performance [2020/01/18 01:04] (current) – [Choosing good Hardware] olivier
Line 87: Line 87:
 Beware of configurations setup that prevent multi-queue, like GRE,GIF,IPSec tunnels or PPPoE (= same source/destination address). If PPPoE usage is mandatory on your Gigabit Internet link, using small hardware, like 4 cores AMD GX (PC Engines APU2), will prevent to reach Gigabit speed. Beware of configurations setup that prevent multi-queue, like GRE,GIF,IPSec tunnels or PPPoE (= same source/destination address). If PPPoE usage is mandatory on your Gigabit Internet link, using small hardware, like 4 cores AMD GX (PC Engines APU2), will prevent to reach Gigabit speed.
 </note> </note>
-==== Choosing good Hardware ====+==== Choosing hardware ====
 === CPU === === CPU ===
  
Line 108: Line 108:
  
 BSDRP is currently following FreeBSD 12-stable branch, to try to have a mix between recent features and stability. BSDRP is currently following FreeBSD 12-stable branch, to try to have a mix between recent features and stability.
-==== Disabling Hyper Threading (HT) ====+==== Disabling Hyper Threading (on specific CPU only) ====
  
 By default a multi-queue NIC drivers create one queue per core. By default a multi-queue NIC drivers create one queue per core.
-But on older CPU (like Xeon E5-2650 V1) those logical cores didn't help at all for managing interrupts generated by high speed NIC (this is not true on 13-head since [[https://svnweb.freebsd.org/base?view=revision&revision=354338|r354338]] and the new machdep.hyperthreading_intr_allowed that allow interrupts on HTT logical CPUs.+But on some older CPU (like Xeon E5-2650 V1) those logical cores didn't help at all for managing interrupts generated by high speed NIC.
  
 HT can be disabled with this command: HT can be disabled with this command:
Line 255: Line 255:
 {{documentation:technical_docs:entropy_source_impact.png|Impact of disabling some entropy source on FreeBSD forwarding performance}} {{documentation:technical_docs:entropy_source_impact.png|Impact of disabling some entropy source on FreeBSD forwarding performance}}
  
-==== Polling mode ==== 
  
-Polling can be used in 2 cases: 
-   * On **old hardware only** (where Ethernet card doesn't support **Intelligent interrupt management**), using the polling mode can improve performance by reducing CPU interrupt 
-   * When used [[http://lists.freebsd.org/pipermail/freebsd-net/2013-May/035626.html|for usage in a Virtual Machine]] but don't forgot to [[https://lists.freebsd.org/pipermail/freebsd-net/2015-March/041657.html|overwrite the default HZ value in this case too]]. 
-For enabling polling mode: 
-  - Edit /etc/rc.conf.misc and replace //polling_enable="NO"// by //polling_enable="YES"// 
-  - Execute: service polling start 
- 
-=== NIC drivers compatibility matrix === 
- 
-BSDRP can use some special features on somes NIC: 
-  * [[http://www.freebsd.org/cgi/man.cgi?query=polling|Ethernet device polling]] for high performance with Ethernet controllers that didn't include interrupt management feature or [[http://info.iet.unipi.it/~luigi/papers/20130520-rizzo-vm.pdf|for usage in a VM]]. 
-  * [[http://www.freebsd.org/cgi/man.cgi?query=altq|ALTQ]] for queuing, but try to use [[http://www.freebsd.org/cgi/man.cgi?query=dummynet|dummynet]] in place 
- 
-And only theses devices support these modes: 
- 
-^ name      ^ Description    ^ Polling   ^ ALTQ       ^ 
-| ae  | Attansic/Atheros L2 FastEthernet controller driver | no | yes |  
-| age | Attansic/Atheros L1 Gigabit Ethernet driver | no | yes | 
-| alc | Atheros AR813x/AR815x Gigabit/Fast Ethernet driver | no | yes | 
-| ale | Atheros AR8121/AR8113/AR8114 Gigabit/Fast Ethernet driver | no | yes | 
-| bce | Broadcom NetXtreme II (BCM5706/5708/5709/5716) PCI/PCIe Gigabit Ethernet adapter driver | no | yes | 
-| bfe | Broadcom BCM4401 Ethernet Device Driver | no | yes | 
-| bge | Broadcom BCM570x/5714/5721/5722/5750/5751/5752/5789 PCI Gigabit Ethernet adapter driver | yes | yes | 
-| cas | Sun Cassini/Cassini+ and National Semiconductor DP83065 Saturn Gigabit Ethernet driver  | no | yes | 
-| cxgbe | Chelsio T4 and T5 based 40Gb, 10Gb, and 1Gb Ethernet adapter driver | no | yes | 
-| dc | DEC/Intel 21143 and clone 10/100 Ethernet driver | yes | yes | 
-| de | DEC DC21x4x Ethernet device driver | no | yes | 
-| ed | NE-2000 and WD-80x3 Ethernet driver | no | yes | 
-| em | Intel(R) PRO/1000 Gigabit Ethernet adapter driver | yes | yes | 
-| et | Agere ET1310 10/100/Gigabit Ethernet driver | no | yes | 
-| ep | Ethernet driver for 3Com Etherlink III (3c5x9) interfaces | no | yes | 
-| fxp | Intel EtherExpress PRO/100 Ethernet device driver | yes | yes | 
-| gem | ERI/GEM/GMAC Ethernet device driver | no | yes | 
-| hme | Sun Microelectronics STP2002-STQ Ethernet interfaces device driver | no | yes | 
-| igb | Intel(R) PRO/1000 PCI Express Gigabit Ethernet adapter driver | yes | needs IGB_LEGACY_TX | 
-| ixgb(e) | Intel(R) 10Gb Ethernet driver | yes | needs IGB_LEGACY_TX | 
-| jme | JMicron Gigabit/Fast Ethernet driver | no | yes | 
-| le | AMD Am7900 LANCE and Am79C9xx ILACC/PCnet Ethernet interface driver | no | yes | 
-| msk | Marvell/SysKonnect Yukon II Gigabit Ethernet adapter driver | no | yes | 
-| mxge | Myricom Myri10GE 10 Gigabit Ethernet adapter driver | no | yes | 
-| my | Myson Technology Ethernet PCI driver | no | yes | 
-| nfe | NVIDIA nForce MCP Ethernet driver | yes | yes | 
-| nge | National Semiconductor PCI Gigabit Ethernet adapter driver | yes | no | 
-| nve | NVIDIA nForce MCP Networking Adapter device driver | no | yes | 
-| qlxgb | QLogic 10 Gigabit Ethernet & CNA Adapter Driver | no | yes | 
-| re | RealTek 8139C+/8169/816xS/811xS/8101E PCI/PCIe Ethernet adapter driver | yes | yes | 
-| rl | RealTek 8129/8139 Fast Ethernet device driver | yes | yes | 
-| sf | Adaptec AIC‐6915 "Starfire" PCI Fast Ethernet adapter driver | yes | yes | 
-| sge | Silicon Integrated Systems SiS190/191 Fast/Gigabit Ethernet driver | no | yes | 
-| sis | SiS 900, SiS 7016 and NS DP83815/DP83816 Fast Ethernet device driver | yes | yes | 
-| sk | SysKonnect SK-984x and SK-982x PCI Gigabit Ethernet adapter driver | yes | yes | 
-| ste | Sundance Technologies ST201 Fast Ethernet device driver | no | yes | 
-| stge | Sundance/Tamarack TC9021 Gigabit Ethernet adapter driver | yes | yes | 
-| ti | Alteon Networks Tigon I and Tigon II Gigabit Ethernet driver | no | yes | 
-| txp | 3Com 3XP Typhoon/Sidewinder (3CR990) Ethernet interface | no | yes | 
-| vge | VIA Networking Technologies VT6122 PCI Gigabit Ethernet adapter driver | yes | yes | 
-| vr | VIA Technologies Rhine I/II/III Ethernet device driver | yes | yes | 
-| xl | 3Com Etherlink XL and Fast Etherlink XL Ethernet device driver | yes | yes | 
- 
-Using others NIC will works too :-) 
 ==== NIC drivers tuning ==== ==== NIC drivers tuning ====
  
documentation/technical_docs/performance.txt · Last modified: 2020/01/18 01:04 by olivier

Except where otherwise noted, content on this wiki is licensed under the following license: BSD 2-Clause
Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki