Re: [PATCH net-next 3/8] cadence: macb: Add page pool support handle multi-descriptor frame rx
From: Théo Lebrun <theo.lebrun@bootlin.com>
Date: 2026-01-26 18:45:36
On Mon Jan 26, 2026 at 3:29 PM CET, Andrew Lunn wrote:
quoted
quoted
I was more interested in plain networking, not XDP. Does it perform better with page pool? You at least need to show it is not worse, you need to avoid performance regressions.I retested with iperf3. The target has a single rx queue with iperf3 running with no cpu affinity set. | | 64 | 128 | | baseline | 273 | 545 | | pp (page) | 273 | 544 | | pp (2 frags) | 272 | 544 |So no real difference. That is unusual, it is typically faster, or if it is always doing line rate, it uses less CPU time. That might suggest the page pool integration is not optimal?
One more data point. I get line rate with & without page_pool so below
are CPU times from /proc/stat:
upstream pp
user 1 1
system 179 91 (!!!)
idle 7874 7303
softirq 35 37
16K pages on Mobileye EyeQ5 (MIPS), 7 fragments per page.
Paolo shared 64 versus 128 measurements but I am unsure what those stand
for; I doubt it can be packet size as xdp-bench does not have it as a
parameter. https://man.archlinux.org/man/extra/xdp-tools/xdp-bench.8.en
Measurement incantation:
cat /proc/stat > /tmp/a && \
iperf3 -c $IP && \
cat /proc/stat > /tmp/b && \
awk 'NR==FNR && $1=="cpu" {user=$2;sys=$4;idle=$5;softirq=$8;next}
$1=="cpu" {printf "user\t%5d\n", $2-user}
$1=="cpu" {printf "system\t%5d\n", $4-sys}
$1=="cpu" {printf "idle\t%5d\n", $5-idle}
$1=="cpu" {printf "softirq\t%5d\n", $8-softirq}
' /tmp/a /tmp/b
Thanks,
--
Théo Lebrun, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com