Skip to content

Improve perfmonitor#150

Open
swz-git wants to merge 3 commits intomasterfrom
improve-perfmonitor
Open

Improve perfmonitor#150
swz-git wants to merge 3 commits intomasterfrom
improve-perfmonitor

Conversation

@swz-git
Copy link
Member

@swz-git swz-git commented Mar 11, 2026

The perfmonitor now shows more info. It shows actual "packet-arrival-in-time"-rate instead of the old packet-arrival-rate. It also shows p95 and p99 values for packet arrival deltas. It looks like this when running the game at 144hz.
image
First percentage is ticks that arrived in time for a 60hz arrival rate, second one is ticks that arrived in time for a 120hz arrival rate. Running the game at a stable 120hz yields a 100% on both, 60hz yields 100%|0% and 30hz yields 0%|0%. This enables you to show if RLBot is actually delivering a stable packet stream to bots. Also see related violin plot of packet arrival rate at 144hz.

@VirxEC
Copy link
Collaborator

VirxEC commented Mar 11, 2026

Having the @ 120hz then having the % arrival for 60hz is a bit odd imo, maybe swap them for 80%|100% ?

@swz-git
Copy link
Member Author

swz-git commented Mar 11, 2026

The @ Xhz changes too, if your game is running at 90fps, it'll say RLBot @ 90hz 100%|0%. Maybe it makes sense to change it to the other way around anyways though 🤔

@VirxEC
Copy link
Collaborator

VirxEC commented Mar 11, 2026

I think it being swapped makes more sense, or maybe just different formatting for this info.

@VirxEC
Copy link
Collaborator

VirxEC commented Mar 11, 2026

tbh I might be on edge about having the 60hz tag at all, surely just the % for 120hz is fine. We know that 50% == 60hz, 2 numbers might just confuse ppl

@swz-git
Copy link
Member Author

swz-git commented Mar 11, 2026

The 120 percentage shows 0% when running at 60hz though (0% percent of ticks arrive within 1/120 of a second)

@NicEastvillage
Copy link
Contributor

NicEastvillage commented Mar 11, 2026

I am also slightly confused about how to read this or what the takeaway is. You are running the game at 144 fps to demonstrate what it looks like when RLBot runs poorly. But it is not clear that RLBot runs poorly because the game is at 144 fps. I mean, that's what you are trying to communicate, right?

Why are we interested in 60 Hz? Is that for low-end users?

I am also surprised that with 5% of packages arriving after 13.9ms (around 60 Hz), you still get 120 Hz on average. Your violin plot doesn't show any arriving earlier than 8ms (120 Hz), so I'd expect something inbetween.

@swz-git
Copy link
Member Author

swz-git commented Mar 11, 2026

Yeah 60hz percentage would be for low-end users, and it also makes the much more strict 120hz percentage next to it look less bad ig. Not sure how we could tell users that it is their 144fps cap that is causing the 80% value without a sentence explaining that. The p95 is this high because the p05 is ~0ms. I think the violin plot didn't catch it because core skips sending those ticks maybe?

@NicEastvillage
Copy link
Contributor

NicEastvillage commented Mar 11, 2026

Maybe the old packet-arrival-rate is better than the packet-arrival-in-time-for-60 Hz metric since it gives a more intuitive number for how far away from 120 Hz it is. I would display it in parentheses, e.g. RLBot @ {average Hz} Hz {packet-arrival-in-time}% ({package-arrive-rate}%) ....

@swz-git
Copy link
Member Author

swz-git commented Mar 11, 2026

The average hz value already shows you that information, but I agree that it could be more intuitive your way 🤔

@NicEastvillage
Copy link
Contributor

The average hz value already shows you that information

For low fps, yes, but your 144 fps example has an average of 120 Hz, so here the value is not useful.

Maybe we can estimate the user's fps using the number of same-frame packets. If the number of duplicates divided by 120 isn't approximately an integer, then the game is likely not at N*120 fps.

@swz-git
Copy link
Member Author

swz-git commented Mar 13, 2026

The hz value conveys the exact same information as the old packet-arrival-rate, its just multiplied by 120. While it is definitely possible to estimate the users fps, I think the current 120hz arrival-in-time-rate is a better metric than a boolean that checks if the game is running at N*120 fps. The N*120fps bool would just be arrival-in-time-rate == 100%

@VirxEC
Copy link
Collaborator

VirxEC commented Mar 17, 2026

The 2 percentages still might confuse people. Maybe RLBot @ 120hz | 100% where the only stat included is the arrival in time rate for 120hz. v5 assumes everything is supposed to run at 120hz and not 60hz anyways.

@swz-git
Copy link
Member Author

swz-git commented Mar 17, 2026

My only concern with that is how sensitive the 120hz arrival-in-time-rate is, as I can see it being confusing to see a 0% when you're running 60fps. I am fine with a single percentage though if you don't like the double ones.

@swz-git
Copy link
Member Author

swz-git commented Mar 17, 2026

Another idea: RLBot @ {average_hz}hz | {arrival_in_time_rate} {average_hz == 120 && arrival_in_time_rate == 1.0 ? "OK" : ""} where arrival_in_time_rate is for the current average_hz value instead of 120. Examples:

  • RLBot @ 120hz | 100% OK when running at a stable 120fps (stable 240/360 would also show this)
  • RLBot @ 120hz | 80% when running at 144fps
  • RLBot @ 60hz | 100% when running at 60fps

@VirxEC
Copy link
Collaborator

VirxEC commented Mar 18, 2026

This is a good idea. Maybe just "OK" under-emphasizes things but that's a minor nit-pick. We can go with "OK" if nothing else comes to mind.

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.

3 participants