Client CPU time reports different values depending on graph granularity



The Client CPU time chart reports a different period average depending on which granularity I select, even though the figure is labeled as the average over the selected period.

With Category set to Animation and the range set to the last 7 days, the daily view reports 8.073 ms. The hourly view reports 1.235 ms and the half hour view reports 1.224 ms over the same selection. The two finer views roughly agree with each other. The daily one is around six times higher.

The headline number looks like a correct mean of the daily bars being drawn, so the problem does not appear to be in the final averaging step. The issue seems to be in how each individual day’s value is produced. On Aug 31 the daily bar sits at about 15.5 ms, while nearly every hourly bucket that day sits near 1 ms with two spikes reaching 8 to 9 ms. A single day’s value exceeding almost every hourly sample inside it is the part I cannot account for.

I also noticed the place update markers sit at different horizontal positions on the two charts, which suggests the daily view is querying a slightly earlier window than the hourly one even though both are set to the last 7 days. That does not seem to explain the gap, since the extra day the daily view would pick up is the lowest in the range and the partial day it would drop is the highest, so the shift should pull the daily average down rather than up.

The same pattern appears with Category set to Total. Daily reports 16.209 ms while hourly and half hour both report about 8.4 ms. The difference matters in practice, since a 60 fps frame budget is roughly 16.7 ms. The daily view puts us right at that ceiling while the finer views put us at about half of it, so the two give opposite answers to whether our players can hold 60 fps. I spent a considerable amount of time investigating an animation performance regression that the finer views show does not exist.


Steps to reproduce:

  1. Open Creator Dashboard analytics
  2. Open the Client CPU time chart and set the range to the last 7 days
  3. Set Category to Animation
  4. Set granularity to daily and note the average at the top
  5. Switch granularity to hourly, then to half-hourly
  6. Compare these averages

Expected behavior

Changing granularity should change the resolution of the graph, not the stated average for the period.

Page URL: https://create.roblox.com/dashboard/creations/experiences/4750561026/analytics/performance?rangeType=Last7Days&granularity=Daily

Thanks for the detailed report! You were right that the gap was in how each day’s value was produced, not in the final average.

We’ve shipped a fix so the Total average on daily vs hourly / half-hourly should now be much closer.

You may still see a gap on the Animation category. Your experience has a short spike of about 8.8 ms around 12:00 PDT on Aug 30. Daily granularity uses one sample per hour, so a spike that lands at the start of an hour is 1 of only 24 inputs for that day and can pull the daily number up. Hourly and half-hourly views are count-weighted averages over the whole bucket, so that one minute is averaged against the rest of the hour and barely moves the line. That’s why the two finer views agree with each other while Animation daily can still read higher.

We’re also exploring adding minute-level granularity chart view for short date ranges in the past, to help better understanding issue like this.

Please let us know if you have further questions!

1 Like