Est-ce que t'as regardé si la carte Marvell utilisait bien toute sa bande passante pci ? Le souci du N100 c'est qu'il n'a que 9 ligne pci gen3 en tout donc selon les cas les fabricants de mini pc doivent parfois sacrifier les perfs ... que dit lspci -vvv sur le nombre de ligne PCI et la vitesse total allouée à la carte réseau marvel ?
Les tests que j'avais lus indiquaient bien que ce n'était pas un problème. Je viens de vérifier :
$ lspci -nnvvs 07:00.0
07:00.0 Ethernet controller [0200]: Aquantia Corp. AQC113C NBase-T/IEEE 802.3an Ethernet Controller [Marvell Scalable mGig] [1d6a:14c0] (rev 03)
Subsystem: Aquantia Corp. Device [1d6a:0001]
[…]
LnkCap: Port #0, Speed 8GT/s, Width x2, ASPM not supported
ClockPM+ Surprise- LLActRep- BwNot- ASPMOptComp+
LnkCtl: ASPM Disabled; RCB 64 bytes, LnkDisable- CommClk+
ExtSynch- ClockPM+ AutWidDis- BWInt- AutBWInt-
LnkSta: Speed 8GT/s, Width x2
TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
En PCIe Gen 3, x2 nous donne 1.969 GB/s donc > 10 Gb/s sans problème.
Aussi vu que tu n'as que 4 coeurs est-ce que les interruptions sont bien répartis entre les coeur ? (cat /proc/interrupts)
J'ai l'impression que sur une seule connexion TCP, ça n'est pas le cas, je n'ai que 2 compteurs sur 4 qui augmentent fortement.
Every 0.1s: grep lan0 /proc/interrupts router: Sun Mar 16 14:34:2[0/31]
134: 365285436 0 0 0 IR-PCI-MSIX-0000:07:00.0 0-edge lan0
135: 0 50637034 0 0 IR-PCI-MSIX-0000:07:00.0 1-edge lan0
136: 0 0 419998770 0 IR-PCI-MSIX-0000:07:00.0 2-edge lan0
137: 0 0 0 10079144 IR-PCI-MSIX-0000:07:00.0 3-edge lan0
138: 0 0 0 0 IR-PCI-MSIX-0000:07:00.0 4-edge lan0
Si je mets 8 connexions TCP par contre, les 4 compteurs augmentent bien simultanément. Le dernier reste à 0, je ne sais pas ce qu'il représente.
En tout cas, ça confirme ce que je vois sur les graphes de CPU : seuls 1 ou 2 cœurs prennent le trafic quand je suis en mono-connexion.
Il faudrait aussi que je m'amuse à grapher les inpackets/outpackets des 4 queues de chaque NIC :
Every 0.1s: ethtool -S lan0 | grep -Pi '(inpackets|outpackets):' router: Sun Mar 16 14:38:1[0/35]
InPackets: 3266062976
OutPackets: 1316155604
Queue[0] InPackets: 21093433
Queue[0] OutPackets: 1127948050
Queue[1] InPackets: 181200073
Queue[1] OutPackets: 83390005
Queue[2] InPackets: 3016562247
Queue[2] OutPackets: 11937344
Queue[3] InPackets: 47249083
Queue[3] OutPackets: 11259373
Il me semble que ce sont parfois des queues différentes qui prennent les paquets en entrée et en sortie (par exemple
Queue[3] InPackets semble augmenter proportionnellement à
Queue[0] OutPackets), mais il me faudra un graphique pour mieux visualiser.
Ma dernière piste pour gagner en performance serait d'utiliser la flowtable avec XDP (
xdp-forward). Mais pour ça, il faut patcher le kernel car les VLAN ne sont pas supportés pour le moment :
https://github.com/xdp-project/xdp-tools/issues/488.