Skip to content

Conversation

@shanefagan
Copy link

  • Detects bursty UDP traffic from apps that are run from known gaming launchers
  • Goal is to lower the network jitter and in testing has lowered it around 20%-30% in games like CS2

shanefagan and others added 10 commits September 27, 2025 09:25
 Rationale on this is just that bpftune is focused a lot on server
tuning but a similar approach can be applied for gaming and there are
settings that could improve perf, reduce stuttering and maybe give a
competitive advantage over other systems. eBPF makes sense as it would
be monitoring the system behaviour rather than being a command so it
would do the work automatically.

- Detects UDP bursty traffic and sets tuners to benefit competitive
  gaming workloads
- 3 profiles basically a low, mid and high approach called casual,
  competitive and intense. Intense is a lot of UDP traffic and probably
isn't nessessary for most games, competitive works for Dota2 and CS2
automatically for example. PoE2 and other less intense UDP workloads
fall into casual
- I cleaned up tuner definition a little bit
- It has revert logic after the UDP traffic goes away to go back to what
  it had before the settings
Quick test after I added it and it seems to stop a bit of the false
positives. The issue basically is QUIC (HTTP/3) uses UDP a bit and can
trigger a small burst of traffic when going to a website that supports
it.
If you only try detection based on network traffic you get spikes based
on other apps like systemd-resolve, torrents, steam itself, browser,
discord...etc. I added a blacklist and a whitelist, the blacklist is for
common stuff I know isn't gaming related, like utp::*. For gaming
workloads I assume that it is proton, or from a launcher or whatever. It
has a corner case that if a game is natively running on the system you
would need to use gamemoderun or game-performance to hint to the
userspace side of the tool but it is a corner case and I'm sure someone
smarter than me can do it better.
@oracle-contributor-agreement
Copy link

Thank you for your pull request and welcome to our community! To contribute, please sign the Oracle Contributor Agreement (OCA).
The following contributors of this PR have not signed the OCA:

To sign the OCA, please create an Oracle account and sign the OCA in Oracle's Contributor Agreement Application.

When signing the OCA, please provide your GitHub username. After signing the OCA and getting an OCA approval from Oracle, this PR will be automatically updated.

If you are an Oracle employee, please make sure that you are a member of the main Oracle GitHub organization, and your membership in this organization is public.

@oracle-contributor-agreement oracle-contributor-agreement bot added the OCA Required At least one contributor does not have an approved Oracle Contributor Agreement. label Oct 2, 2025
Copy link
Member

@alan-maguire alan-maguire left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This looks great, apologies it took a while to get to it! I would make the following suggestion; could you pull out the commits that relate to framework changes - which are fantastic - and submit them separately? I.e. the declaration of BPFTUNABLE_SCENARIO[_QUIET] and associated libbpftune and tuner changes to accommodate it? These could all be squashed into a single commit - e.g. support quiet scenarions. Then the gamer tuner changes could be submitted separately. Also from a bookkeeping side the OCA needs to be signed as part of the process. Thanks!

@shanefagan
Copy link
Author

Hi Alan,

Yeah, I can go and pull that out. It'll have to wait for a month as I'm currently working at Oracle but would need internal approval but I'm leaving so in about a month I can sign the OCA after that. At the moment I can't do much really.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

OCA Required At least one contributor does not have an approved Oracle Contributor Agreement.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants