Commit Graph

10 Commits

Author SHA1 Message Date
Alexander Boettcher
5e5fe7291a nic/ipxe: add throttle RX interrupt support
The commit adds support to throttle the rate of the RX IRQs to a specified
value. The effect is, that no RX IRQs below the time threshold will fire and
therefore the CPU load gets reduced on the host. Trade-off gaming between
cpu load, throughput, overload.

Modular Sculpt 23.10 on S938 as testcase. In brackets the CPU affinity is
denoted.

ipxe (0,0) -> nic_router (1,0) -> Debian VM vbox6 (3,0) and (3,1)

VM: iperf -C X.X.X.X -t 60 -R

iperf server X.X.X.X is outside Sculpt and sends data due to '-R' to VM

Non representative measure points:

cpu load   - ipxe  - nic_router - iperf throughput
--------------------------------------------------
w/o  patch -  ~80% -       ~50% - ~706 MBit/s - 0    -> throttling off by default on S938
patch 651  -  ~20% -       ~35% - ~763 MBit/s - 651  -> 0.166ms throttle RX IRQ
patch 5580 -  ~15% -       ~25% - ~650 MBit/s - 5580 -> 1.4ms   throttle RX IRQ

Issue #5149
2024-04-12 15:00:44 +02:00
Alexander Boettcher
31e8b50b7c nic/ipxe: batch TX requests
A bunch of transmit requests received by the Uplink server (nic_router)
are currently added one by one to the ring buffer and every time the hardware
is notified to process each single request.

Instead, add as many as possible transmit requests in the ring buffer of
the hardware and when done trigger the hardware to process the ring.

Additionally, don't receive an "processed" TX IRQ for each element in the
ring, which causes high CPU load.

With this commit the TX IRQs in the ipxe driver for a

iperf -c X.X.X.X -t 60

from within a VM to the outside iperf server is reduced from about
~2'600'000 IRQs to about ~200'000. The overall CPU load for the driver
(when executed alone on CPU 0) is reduced from ~85 percent load to ~45 percent
load.

Issue #5149
2024-04-12 15:00:43 +02:00
Christian Helmuth
1a2677ebe6 dde_ipxe: update Intel NIC support list from upstream
Also, the repository URL was adapted to the permanent redirect to github
to prevent the following warning.

  dde_ipxe  download http://git.ipxe.org/ipxe.git
  dde_ipxe  git Cloning into 'src/lib/dde_ipxe'...
  dde_ipxe  git warning: redirecting to https://github.com/ipxe/ipxe/
  dde_ipxe  update src/lib/dde_ipxe
2022-04-13 08:07:58 +02:00
Alexander Boettcher
d29b843a0f dde_ipxe: improve throughput for Realtek devices
By increasing the ring descriptor count the throughput increased from
few kB/s to the range of MB/s.

Issue #3939
2021-02-23 12:02:43 +01:00
Christian Helmuth
4f0b17a4dc dde_ipxe: update Intel NIC driver to latest upstream
This patch is motivated by sporadic hangs during link down/up on i219
NICs handling and the fix implemented upstream in

  https://git.ipxe.org/ipxe.git/commit/546dd51de8459d4d09958891f426fa2c73ff090d

Issue #1220
2019-05-16 13:11:02 +02:00
Christian Helmuth
4506912f6e dde_ipxe: skip MAC/PHY reset on Intel NICs
Inspired by the mailing-list posting [1], this commit removes the
MAC/PHY reset for all Intel cards and effectively prevents the bandwidth
drop to 10 MBit/s (e.g., on i217lm). I understand it as preliminary fix
for practical reasons - a real fix would be to update the ipxe port and
monitor for more postings like the one mentioned.

[1] http://lists.ipxe.org/pipermail/ipxe-devel/2015-December/004511.html
2016-02-05 10:47:45 +01:00
Sebastian Sumpf
ffaf65efa0 dde_ipxe: enable BCM57cxx cards
Add tg3 driver files and adjust Genode's ipxe code. Tested on Fiasco.OC only.

issue #1609
2015-07-06 12:22:27 +02:00
Alexander Boettcher
68abf0616a dde_ipxe: enable Intel I218-LM/I218-V PCI ID
Commit inspired by patch from @alex-ab/@cnuke but uses only one patch
file for all added NICs.

Issue #1220
2014-12-05 15:17:00 +01:00
Christian Prochaska
ee86b9d47a dde_ipxe: add Intel I217-LM PCI ID
Fixes #1220.
2014-08-18 13:26:48 +02:00
Josef Söntgen
313202fb65 dde_ipxe: migrate to new ports mechanism
Issue #1082
2014-05-27 11:14:43 +02:00