Skip to content

Fix XDP cpu eval filter#445

Closed
Axonis wants to merge 2 commits into
LNST-project:masterfrom
Axonis:fix-xdp-cpu-eval-filter
Closed

Fix XDP cpu eval filter#445
Axonis wants to merge 2 commits into
LNST-project:masterfrom
Axonis:fix-xdp-cpu-eval-filter

Conversation

@Axonis

@Axonis Axonis commented Jun 8, 2026

Copy link
Copy Markdown
Collaborator

Description

XDP recipes (drop, tx) evaluate aggregate CPU utilization on both test hosts. The generator host only pushes traffic toward the receiver - it does not run the XDP program. Because the generator spreads packet transmission across multiple cores while the receiver pins IRQs to a single CPU, their aggregate CPU profiles are very different.

When machines rotate between generator and receiver roles across pipeline runs, the rolling baseline for a given host absorbs values from both roles. This makes the baseline unstable and causes false positive CPU eval detections that have nothing to do with actual XDP performance.

Changes

  • Add an overridable cpu_perf_evaluation_hosts property to BaseEnrtRecipe that controls which hosts are included in CPU baseline evaluation. Defaults to all matched hosts, so existing recipes are unaffected.
  • Override it in XDPDropRecipe and XDPTxRecipe to only evaluate CPU on host2 (the receiver), where the XDP workload actually runs.

CPU data is still collected and saved on both hosts - only the evaluation step is scoped to the receiver.

Tests

TODO - run XDP

Reviews

@olichtne @enhaut @jtluka

Closes: #

Axonis added 2 commits June 8, 2026 15:56
Recipes where only one host runs the workload under test (e.g. XDP
on the receiver) need a way to exclude the other host from CPU
baseline evaluation. The generator side only pushes traffic and its
aggregate CPU is not a meaningful regression signal.

Defaults to all matched hosts so existing recipes are unaffected.
The generator host only pushes traffic toward the receiver where XDP
processes it. Including the generator in CPU baseline evaluation
contaminates the rolling baseline with unrelated load patterns and
causes false positive CPU detections.

Restrict CPU evaluation to host2 (the receiver) where the actual XDP
workload runs and where IRQs are pinned to a single CPU.
@olichtne

olichtne commented Jun 9, 2026

Copy link
Copy Markdown
Collaborator

this could theoretically be a useful feature... so not discarding it YET.

however, the initial analysis of xdp related issues is incorrect, and IMO there is no reason to evaluate only the host2 part of the recipe for xdp... which would mean that we would only keep the base enrt definition of "all hosts" and well... that changes nothing for now...

so for now let's work a bit more on the analysis side of things, and until it is proven that this is needed i'm blocking this.

@Axonis

Axonis commented Jun 9, 2026

Copy link
Copy Markdown
Collaborator Author

Built on wrong assumptions, closing.

@Axonis Axonis closed this Jun 9, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants