Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use FNMP to inject interesting frames on the Rx path of spinxsk #809

Open
wants to merge 32 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 29 commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
4f05f93
Setup fnmp for spinxsk runs
guhetier Mar 5, 2025
542a600
Open an fnmp handle from spinxsk
guhetier Mar 5, 2025
b9b2b15
WIP: Do something with the handle
guhetier Mar 5, 2025
a68b650
Fix setup scripts for fnmp
guhetier Mar 6, 2025
7a9c703
Add an option to use FNMP
guhetier Mar 6, 2025
7b605a3
Avoid reboot request in CI
guhetier Mar 6, 2025
4183264
Extract packet generation in a function
guhetier Mar 6, 2025
2db8ef4
Remove fnmp from driver verifier for real
guhetier Mar 6, 2025
ae1b865
Loop on injecting packets
guhetier Mar 6, 2025
fe5c71c
Move frame generation to separate threads
guhetier Mar 8, 2025
bef666a
Randomize more options on Rx packets
guhetier Mar 10, 2025
2fbe300
Also inject purely random frames
guhetier Mar 10, 2025
532bdb4
Fix invalid buffer size
guhetier Mar 10, 2025
c991307
Correct random value for flush rss cpu option
guhetier Mar 10, 2025
bd74bc3
Add QUIC flavoring
guhetier Mar 11, 2025
d0ce57f
Review feedback
guhetier Mar 18, 2025
2844dd0
Onboard both spin test in CI
guhetier Mar 18, 2025
5fb7465
PR feedback
guhetier Mar 19, 2025
fba7d95
Avoid duplicate log file name
guhetier Mar 19, 2025
61e7d7f
Potentially corrupt well form frame buffers
guhetier Mar 19, 2025
7cd6f55
Revert throughput increase
guhetier Mar 19, 2025
eba4bbe
Make the number of rx injection thread configurable and 2 by default
guhetier Mar 20, 2025
bdf42eb
Refactor in subfunction, move variables decl to top of blocks
guhetier Mar 20, 2025
2ba6a04
Increase injected rx throughput
guhetier Mar 20, 2025
c4f3b3c
Fix and improvements
guhetier Mar 21, 2025
d33f742
Fix parameter typo
guhetier Mar 21, 2025
52fa750
Optimize random buffer generation
guhetier Mar 21, 2025
fe237f2
Limit the frame size most of the time to improve throughput
guhetier Mar 22, 2025
3768480
Add a small chance for very large burst of packets
guhetier Mar 24, 2025
e26fdd7
Remove test assertion
guhetier Mar 24, 2025
86c73a5
Improve function name
guhetier Mar 24, 2025
1d49404
Fix tab + remove jumbo bursts
guhetier Mar 24, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 5 additions & 4 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -237,6 +237,7 @@ jobs:
windows: [2019, 2022, Prerelease]
configuration: [Release, Debug]
platform: [x64, arm64]
testDriver: [XDPMP, FNMP]
exclude:
- windows: 2019
platform: arm64
Expand Down Expand Up @@ -267,22 +268,22 @@ jobs:
if: ${{ github.event_name == 'pull_request' || github.event_name == 'workflow_dispatch' }}
shell: PowerShell
timeout-minutes: 20
run: tools/spinxsk.ps1 -Verbose -Stats -Config ${{ matrix.configuration }} -Platform ${{ matrix.platform }} -Minutes ${{ env.prRuntime }} -XdpmpPollProvider ${{ env.xdpmpPollProvider }} -SuccessThresholdPercent ${{ env.successThresholdPercent }} -EnableEbpf -XdpInstaller NuGet
run: tools/spinxsk.ps1 -Verbose -Stats -Config ${{ matrix.configuration }} -Platform ${{ matrix.platform }} -Driver ${{ matrix.testDriver}} -Minutes ${{ env.prRuntime }} -XdpmpPollProvider ${{ env.xdpmpPollProvider }} -SuccessThresholdPercent ${{ env.successThresholdPercent }} -EnableEbpf -XdpInstaller NuGet
- name: Run spinxsk (main)
if: ${{ github.event_name != 'pull_request' && github.event_name != 'workflow_dispatch'}}
shell: PowerShell
timeout-minutes: 70
run: tools/spinxsk.ps1 -Verbose -Stats -Config ${{ matrix.configuration }} -Platform ${{ matrix.platform }} -Minutes ${{ env.fullRuntime }} -XdpmpPollProvider ${{ env.xdpmpPollProvider }} -SuccessThresholdPercent ${{ env.successThresholdPercent }} -EnableEbpf -XdpInstaller NuGet
run: tools/spinxsk.ps1 -Verbose -Stats -Config ${{ matrix.configuration }} -Platform ${{ matrix.platform }} -Driver ${{ matrix.testDriver}} -Minutes ${{ env.fullRuntime }} -XdpmpPollProvider ${{ env.xdpmpPollProvider }} -SuccessThresholdPercent ${{ env.successThresholdPercent }} -EnableEbpf -XdpInstaller NuGet
- name: Convert Logs
if: ${{ always() }}
timeout-minutes: 15
shell: PowerShell
run: tools/log.ps1 -Convert -Name spinxsk -Verbose -Config ${{ matrix.configuration }} -Platform ${{ matrix.platform }}
run: tools/log.ps1 -Convert -Name spinxsk_${{ matrix.testDriver }} -Verbose -Config ${{ matrix.configuration }} -Platform ${{ matrix.platform }}
- name: Upload Logs
uses: actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1
if: ${{ always() }}
with:
name: logs_stress_win${{ matrix.windows }}_${{ matrix.configuration }}_${{ matrix.platform }}
name: logs_stress_win${{ matrix.windows }}_${{ matrix.configuration }}_${{ matrix.platform }}_${{ matrix.testDriver }}
path: artifacts/logs
- name: Check Drivers
if: ${{ always() }}
Expand Down
2 changes: 1 addition & 1 deletion src/xdp.props
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@
<PackageReference Include="Microsoft.SourceLink.GitHub" Version="1.0.0" />
<PackageReference Include="Microsoft.Windows.WDK.$(Platform)" Version="$(XdpWdkVersion)" Condition="'$(ImportWdk)' != 'false'" />
<PackageReference Include="Microsoft.Windows.WDK.$(HostPlatform)" Version="$(XdpWdkVersion)" Condition="'$(ImportWdk)' != 'false' AND '$(HostPlatform)' != '$(Platform)'" />
<PackageReference Include="win-net-test" Version="1.2.0" GeneratePathProperty="true" Condition="'$(ImportWnt)' == 'true'"/>
<PackageReference Include="win-net-test" Version="1.3.0" GeneratePathProperty="true" Condition="'$(ImportWnt)' == 'true'"/>
</ItemGroup>
<Import Project="$(UndockedDir)vs\windows.undocked.props" Condition="'$(ImportUndocked)' != 'false'" />
<PropertyGroup>
Expand Down
Loading
Loading