Skip to content

Commit 3f54312

Browse files
committed
Add support for frametime events per minute.
1 parent 33bc6ed commit 3f54312

File tree

3 files changed

+69
-33
lines changed

3 files changed

+69
-33
lines changed

indra/newview/llviewerstats.cpp

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -229,7 +229,11 @@ LLTrace::SampleStatHandle<F64Milliseconds > FRAMETIME_JITTER("frametimejitter",
229229
FRAMETIME_JITTER_STDDEV("frametimejitterstddev", "Standard deviation of frametime jitter in a 5 second period."),
230230
FRAMETIME_STDDEV("frametimestddev", "Standard deviation of frametime in a 5 second period.");
231231

232-
LLTrace::SampleStatHandle<U32> FRAMETIME_JITTER_EVENTS("frametimeevents", "Number of frametime events in the session. Applies when jitter exceeds 10% of the previous frame.");
232+
LLTrace::SampleStatHandle<U32> FRAMETIME_JITTER_EVENTS("frametimeevents", "Number of frametime events in the session. Applies when jitter exceeds 10% of the previous frame."),
233+
FRAMETIME_JITTER_EVENTS_PER_MINUTE("frametimeeventspm", "Average number of frametime events per minute."),
234+
FRAMETIME_JITTER_EVENTS_LAST_MINUTE("frametimeeventslastmin", "Number of frametime events in the last minute.");
235+
236+
LLTrace::SampleStatHandle<F64> NOTRMALIZED_FRAMETIME_JITTER_SESSION("normalizedframetimejitter", "Normalized frametime jitter over the session.");
233237

234238
LLTrace::EventStatHandle<LLUnit<F64, LLUnits::Meters> > AGENT_POSITION_SNAP("agentpositionsnap", "agent position corrections");
235239

@@ -309,24 +313,28 @@ void LLViewerStats::updateFrameStats(const F64Seconds time_diff)
309313
{
310314
if (gFrameCount && mLastTimeDiff > (F64Seconds)0.0)
311315
{
316+
mTotalTime += time_diff;
312317
sample(LLStatViewer::FRAMETIME, time_diff);
313318
// old stats that were never really used
314319
F64Seconds jit = (F64Seconds)std::fabs((mLastTimeDiff - time_diff));
315320
sample(LLStatViewer::FRAMETIME_JITTER, jit);
316321
mTotalFrametimeJitter += jit;
317322
sample(LLStatViewer::FRAMETIME_JITTER_CUMULATIVE, mTotalFrametimeJitter);
323+
sample(LLStatViewer::NOTRMALIZED_FRAMETIME_JITTER_SESSION, mTotalFrametimeJitter / mTotalTime);
318324

319325
static LLCachedControl<F32> frameTimeEventThreshold(gSavedSettings, "StatsFrametimeEventThreshold", 0.1f);
320326

321327
if (time_diff - mLastTimeDiff > mLastTimeDiff * frameTimeEventThreshold())
322328
{
323329
sample(LLStatViewer::FRAMETIME_JITTER_EVENTS, mFrameJitterEvents++);
330+
mFrameJitterEventsLastMinute++;
324331
}
325332

326333
mFrameTimes.push_back(time_diff);
327334
mFrameTimesJitter.push_back(jit);
328335

329336
mLastFrameTimeSample += time_diff;
337+
mTimeSinceLastEventSample += time_diff;
330338

331339
static LLCachedControl<S32> frameTimeSampleSeconds(gSavedSettings, "StatsFrametimeSampleSeconds", 5);
332340

@@ -356,6 +364,17 @@ void LLViewerStats::updateFrameStats(const F64Seconds time_diff)
356364
mFrameTimesJitter.clear();
357365
mLastFrameTimeSample = F64Seconds(0);
358366
}
367+
368+
if (mTimeSinceLastEventSample >= 60)
369+
{
370+
mEventMinutes++;
371+
// Calculate average events per minute
372+
U64 frame_time_events_per_minute = (U64)mFrameJitterEvents / mEventMinutes;
373+
sample(LLStatViewer::FRAMETIME_JITTER_EVENTS_PER_MINUTE, frame_time_events_per_minute);
374+
sample(LLStatViewer::FRAMETIME_JITTER_EVENTS_LAST_MINUTE, mFrameJitterEventsLastMinute);
375+
mFrameJitterEventsLastMinute = 0;
376+
mTimeSinceLastEventSample = F64Seconds(0);
377+
}
359378
}
360379
mLastTimeDiff = time_diff;
361380
}

indra/newview/llviewerstats.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -278,8 +278,12 @@ class LLViewerStats : public LLSingleton<LLViewerStats>
278278
F64Seconds mTotalFrametimeJitter;
279279

280280
U32 mFrameJitterEvents;
281+
U32 mFrameJitterEventsLastMinute;
282+
U32 mEventMinutes;
283+
F64Seconds mTotalTime;
281284

282285
F64Seconds mLastFrameTimeSample; // used for frame time stats
286+
F64Seconds mTimeSinceLastEventSample;
283287
std::vector<F64Seconds> mFrameTimes; // used for frame time stats
284288
std::vector<F64Seconds> mFrameTimesJitter; // used for frame time jitter stats
285289
};

indra/newview/skins/default/xui/en/floater_stats.xml

Lines changed: 45 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -54,38 +54,19 @@
5454
label="jitter"
5555
decimal_digits="1"
5656
stat="frametimejitter"/>
57-
<stat_bar name="framet_cumulative"
58-
label="jitter cumulative"
59-
decimal_digits="1"
60-
stat="frametimejitcumulative"/>
61-
<stat_bar name="framet_jitter_99th"
62-
label="jitter 99th percentile"
63-
decimal_digits="1"
64-
stat="frametimejitter99"/>
65-
<stat_bar name="framet_jitter_95th"
66-
label="jitter 95th percentile"
67-
decimal_digits="1"
68-
stat="frametimejitter95"/>
69-
<stat_bar name="framet_jitter_stddev"
70-
label="frametime jitter std dev"
71-
decimal_digits="1"
72-
stat="frametimejitterstddev"/>
73-
<stat_bar name="framet_99th"
74-
label="frametime 99th percentile"
75-
decimal_digits="1"
76-
stat="frametime99"/>
77-
<stat_bar name="framet_95th"
78-
label="frametime 95th percentile"
79-
decimal_digits="1"
80-
stat="frametime95"/>
81-
<stat_bar name="framet_stddev"
82-
label="frametime std dev"
83-
decimal_digits="1"
84-
stat="frametimestddev"/>
85-
<stat_bar name="framet_events"
86-
label="frametime events"
87-
decimal_digits="1"
88-
stat="frametimeevents"/>
57+
<stat_bar name="normalized_cumulative_frametime"
58+
label="normalized sess. jitter"
59+
decimal_digits="4"
60+
stat="normalizedframetimejitter"/>
61+
<stat_bar name="frame_events_per_minute"
62+
label="frame events/minute"
63+
decimal_digits="2"
64+
stat="frametimeeventspm"/>
65+
<stat_bar name="frame_events_last_minute"
66+
label="frame events last min."
67+
decimal_digits="0"
68+
stat="frametimeeventslastmin"/>
69+
8970
<stat_bar name="bandwidth"
9071
label="UDP Data Received"
9172
stat="activemessagedatareceived"
@@ -106,6 +87,38 @@
10687
<stat_view name="render"
10788
label="Render"
10889
setting="OpenDebugStatRender">
90+
<stat_bar name="framet_cumulative"
91+
label="jitter cumulative"
92+
decimal_digits="1"
93+
stat="frametimejitcumulative"/>
94+
<stat_bar name="framet_jitter_99th"
95+
label="jitter 99th percentile"
96+
decimal_digits="1"
97+
stat="frametimejitter99"/>
98+
<stat_bar name="framet_jitter_95th"
99+
label="jitter 95th percentile"
100+
decimal_digits="1"
101+
stat="frametimejitter95"/>
102+
<stat_bar name="framet_jitter_stddev"
103+
label="frametime jitter std dev"
104+
decimal_digits="1"
105+
stat="frametimejitterstddev"/>
106+
<stat_bar name="framet_99th"
107+
label="frametime 99th percentile"
108+
decimal_digits="1"
109+
stat="frametime99"/>
110+
<stat_bar name="framet_95th"
111+
label="frametime 95th percentile"
112+
decimal_digits="1"
113+
stat="frametime95"/>
114+
<stat_bar name="framet_stddev"
115+
label="frametime std dev"
116+
decimal_digits="1"
117+
stat="frametimestddev"/>
118+
<stat_bar name="framet_events"
119+
label="frametime events"
120+
decimal_digits="0"
121+
stat="frametimeevents"/>
109122
<stat_bar name="ktrisframe"
110123
label="KTris per Frame"
111124
unit_label="ktris/fr"

0 commit comments

Comments
 (0)