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

Move QCMP to eBPF or XDP #1076

Open
Jake-Shadle opened this issue Jan 22, 2025 · 1 comment · May be fixed by #1084
Open

Move QCMP to eBPF or XDP #1076

Jake-Shadle opened this issue Jan 22, 2025 · 1 comment · May be fixed by #1084

Comments

@Jake-Shadle
Copy link
Collaborator

Jake-Shadle commented Jan 22, 2025

The XDP code is really new and will take time to fully test, but I wanted to bookmark this now so I don't forget.

Basically, the current XDP implementation is binding to all network device queues where each socket + queue gets their own separate thread. This is good in the sense that the load will be spread across all threads fairly evenly due to receive side scaling, but it has a downside, in that, though we poll, giving every thread a wait point where it can schedule other CPU work, in a regular case with hundreds or thousands of connections, these threads will all be active constantly, potentially starving other threads for long (seconds) periods of time. This is probably ok for eg. the HTTP admin service, but would be bad for the QCMP task as it would skew measurements unpredictably. The QCMP code is fairly simple, so it could just be moved to run entirely in the eBPF program we use to route packets, but that would make the fairly simple program more complicated, so we could just move it to be processed in the same I/O loop as the regular client/server packets since it's just handling packets sent to a specific port.

@XAMPPRocky
Copy link
Collaborator

Yeah I think this makes sense. I think it might make sense that the QCMP module is written as an entirely separate eBPF module. It would be good if our code infra supported multiple eBPF modules so we can have different types of filters.

@Jake-Shadle Jake-Shadle linked a pull request Jan 29, 2025 that will close this issue
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 a pull request may close this issue.

2 participants