[FreeBSD] Polling statt Interrupts bei Netzwerkkarten

31/07/2014 - 19:06 von Frank Graf | Report spam
Hallo,

ich habe einen DSL Router mit FreeBSD. Mir ist aufgefallen daß bei einem
Download auf einem PC im LAN die CPU auf dem Router allein durch die
Interrupts stark ausgelastet ist.

Ich habe mit dem Kommando "ifconfig <interface> polling" das Polling für
beide Netzwerkkarten aktiviert. An der Last hat sich aber nichts
veràndert.

Wie kann ich abfragen ob das Polling für eine Netzwerkkarte tatsàchlich
aktiv ist? Mit "sysctl" habe ich nichts gefunden.

Bei einem Download mit wget mit ca. 1,2 MByte/s betràgt die CPU Last 35%
bei ca. 20% nur für Interrupts. Das ist bei einem AMD Geode NX 1500 (K7
Architektur, 1 GHz) genau so wie bei einem VIA C3 1 GHz.


Frank
 

Lesen sie die antworten

#1 Clemens Zauner
02/08/2014 - 00:22 | Warnen spam
Frank Graf wrote:
Ich habe mit dem Kommando "ifconfig <interface> polling" das Polling für
beide Netzwerkkarten aktiviert. An der Last hat sich aber nichts
veràndert.



AFAIR brauchst du 'options POLLING' im Kernel.

und mittels sysctl dann auch global einschalten (z.B. /etc/sysctl.conf)
kern.polling.enable=1

Wenn du schon beim tuning bist, 'options ZERO_COPY_SOCKETS' bringt
auch was (v.a. wenn du NAT machst).
Aber achtung: nicht alle Ethernetkarten & Treiber unterstützen polling.

Apropos sysctl ... net.inet.ip.fastforwarding hast aber schon auf '1'?
Das macht nàmlich wirklich einen unterschied.

Wie kann ich abfragen ob das Polling für eine Netzwerkkarte tatsàchlich
aktiv ist? Mit "sysctl" habe ich nichts gefunden.



systat -vmstat

Rechts hast du die interrupts gelistet, da siehst du welcher wie
oft /sec ausgelöst wird.

Bei einem Download mit wget mit ca. 1,2 MByte/s betràgt die CPU Last 35%
bei ca. 20% nur für Interrupts. Das ist bei einem AMD Geode NX 1500 (K7
Architektur, 1 GHz) genau so wie bei einem VIA C3 1 GHz.



Viel zu hoch; Ich habe z.B. von PCengines 2 apu1c boards zur Zeit im
Test, die haben einen AMD G-T40E - ist also leistungstechnisch nicht
so weit weg. Forwarding-Raten bei >100k Packets/sec; packetfilter
làuft dabei auch.

Bei den geodes hatte ich nur bis LX800 im einsatz (500 MHz), die schaffen
so ca. 30k pps (also im 'Download' dahinter so ca. 45 MBit.

cu
Clemens.

PS: Notfalls spiel schnell 'pfsense' auf irgendein speichermedium,
click dir das setting zusammen, und schau was das schafft. Wenn mehr
geht: 'find the differnce' im setup.

Ähnliche fragen