summaryrefslogtreecommitdiff
path: root/indra/newview/llviewerstatsrecorder.cpp
diff options
context:
space:
mode:
authorNat Goodspeed <nat@lindenlab.com>2024-05-15 12:18:31 -0400
committerNat Goodspeed <nat@lindenlab.com>2024-05-15 12:18:31 -0400
commit7ccf02515ad3f9e3bf795d651fe4b3c0d773f353 (patch)
treec4adc897c07f652e617e91fbf41c12b823acc808 /indra/newview/llviewerstatsrecorder.cpp
parent1abf5f18d6afc7ae9e1b1562b92e5c1ce33b722f (diff)
parente7eced3c87310b15ac20cc3cd470d67686104a14 (diff)
Merge commit 'e7eced3' into lua-timers for whitespace fixes.
Diffstat (limited to 'indra/newview/llviewerstatsrecorder.cpp')
-rw-r--r--indra/newview/llviewerstatsrecorder.cpp324
1 files changed, 162 insertions, 162 deletions
diff --git a/indra/newview/llviewerstatsrecorder.cpp b/indra/newview/llviewerstatsrecorder.cpp
index 6372679a07..88edb96fbb 100644
--- a/indra/newview/llviewerstatsrecorder.cpp
+++ b/indra/newview/llviewerstatsrecorder.cpp
@@ -5,21 +5,21 @@
* $LicenseInfo:firstyear=2010&license=viewerlgpl$
* Second Life Viewer Source Code
* Copyright (C) 2010, Linden Research, Inc.
- *
+ *
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation;
* version 2.1 of the License only.
- *
+ *
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
- *
+ *
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
+ *
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$
*/
@@ -38,47 +38,47 @@ extern LLControlGroup gSavedSettings;
LLViewerStatsRecorder* LLViewerStatsRecorder::sInstance = NULL;
LLViewerStatsRecorder::LLViewerStatsRecorder() :
- mStatsFile(NULL),
- mTimer(),
- mFileOpenTime(0.0),
- mLastSnapshotTime(0.0),
+ mStatsFile(NULL),
+ mTimer(),
+ mFileOpenTime(0.0),
+ mLastSnapshotTime(0.0),
mEnableStatsRecording(false),
mEnableStatsLogging(false),
mInterval(0.2),
mMaxDuration(300.f),
mSkipSaveIfZeros(false)
{
- if (NULL != sInstance)
- {
- LL_ERRS() << "Attempted to create multiple instances of LLViewerStatsRecorder!" << LL_ENDL;
- }
- sInstance = this;
- clearStats();
+ if (NULL != sInstance)
+ {
+ LL_ERRS() << "Attempted to create multiple instances of LLViewerStatsRecorder!" << LL_ENDL;
+ }
+ sInstance = this;
+ clearStats();
}
LLViewerStatsRecorder::~LLViewerStatsRecorder()
{
- if (mStatsFile)
- {
+ if (mStatsFile)
+ {
writeToLog(0.f); // Save last data
closeStatsFile();
- }
+ }
}
void LLViewerStatsRecorder::clearStats()
{
- mObjectCacheHitCount = 0;
- mObjectCacheMissFullCount = 0;
- mObjectCacheMissCrcCount = 0;
- mObjectFullUpdates = 0;
- mObjectTerseUpdates = 0;
- mObjectCacheMissRequests = 0;
- mObjectCacheUpdateDupes = 0;
- mObjectCacheUpdateChanges = 0;
- mObjectCacheUpdateAdds = 0;
- mObjectCacheUpdateReplacements = 0;
- mObjectUpdateFailures = 0;
- mTextureFetchCount = 0;
+ mObjectCacheHitCount = 0;
+ mObjectCacheMissFullCount = 0;
+ mObjectCacheMissCrcCount = 0;
+ mObjectFullUpdates = 0;
+ mObjectTerseUpdates = 0;
+ mObjectCacheMissRequests = 0;
+ mObjectCacheUpdateDupes = 0;
+ mObjectCacheUpdateChanges = 0;
+ mObjectCacheUpdateAdds = 0;
+ mObjectCacheUpdateReplacements = 0;
+ mObjectUpdateFailures = 0;
+ mTextureFetchCount = 0;
mMeshLoadedCount = 0;
mObjectKills = 0;
}
@@ -88,12 +88,12 @@ void LLViewerStatsRecorder::enableObjectStatsRecording(bool enable, bool logging
{
mEnableStatsRecording = enable;
- // if logging is stopping, close the file
+ // if logging is stopping, close the file
if (mStatsFile && !logging)
- {
+ {
writeToLog(0.f); // Save last data
closeStatsFile();
- }
+ }
mEnableStatsLogging = logging;
}
@@ -101,184 +101,184 @@ void LLViewerStatsRecorder::enableObjectStatsRecording(bool enable, bool logging
void LLViewerStatsRecorder::recordCacheMissEvent(U8 cache_miss_type)
{
- if (LLViewerRegion::CACHE_MISS_TYPE_TOTAL == cache_miss_type)
- {
- mObjectCacheMissFullCount++;
- }
- else
- {
- mObjectCacheMissCrcCount++;
- }
+ if (LLViewerRegion::CACHE_MISS_TYPE_TOTAL == cache_miss_type)
+ {
+ mObjectCacheMissFullCount++;
+ }
+ else
+ {
+ mObjectCacheMissCrcCount++;
+ }
}
void LLViewerStatsRecorder::recordObjectUpdateEvent(const EObjectUpdateType update_type)
{
switch (update_type)
- {
- case OUT_FULL:
- case OUT_FULL_COMPRESSED:
+ {
+ case OUT_FULL:
+ case OUT_FULL_COMPRESSED:
mObjectFullUpdates++;
- break;
- case OUT_TERSE_IMPROVED:
- mObjectTerseUpdates++;
- break;
- default:
- LL_WARNS() << "Unknown update_type" << LL_ENDL;
- break;
- };
+ break;
+ case OUT_TERSE_IMPROVED:
+ mObjectTerseUpdates++;
+ break;
+ default:
+ LL_WARNS() << "Unknown update_type" << LL_ENDL;
+ break;
+ };
}
void LLViewerStatsRecorder::recordCacheFullUpdate(LLViewerRegion::eCacheUpdateResult update_result)
{
switch (update_result)
- {
- case LLViewerRegion::CACHE_UPDATE_DUPE:
- mObjectCacheUpdateDupes++;
- break;
- case LLViewerRegion::CACHE_UPDATE_CHANGED:
- mObjectCacheUpdateChanges++;
- break;
- case LLViewerRegion::CACHE_UPDATE_ADDED:
- mObjectCacheUpdateAdds++;
- break;
- case LLViewerRegion::CACHE_UPDATE_REPLACED:
- mObjectCacheUpdateReplacements++;
- break;
- default:
+ {
+ case LLViewerRegion::CACHE_UPDATE_DUPE:
+ mObjectCacheUpdateDupes++;
+ break;
+ case LLViewerRegion::CACHE_UPDATE_CHANGED:
+ mObjectCacheUpdateChanges++;
+ break;
+ case LLViewerRegion::CACHE_UPDATE_ADDED:
+ mObjectCacheUpdateAdds++;
+ break;
+ case LLViewerRegion::CACHE_UPDATE_REPLACED:
+ mObjectCacheUpdateReplacements++;
+ break;
+ default:
LL_WARNS() << "Unknown update_result type " << (S32) update_result << LL_ENDL;
- break;
- };
+ break;
+ };
}
void LLViewerStatsRecorder::writeToLog( F32 interval )
{
if (!mEnableStatsLogging || !mEnableStatsRecording)
- {
- return;
- }
+ {
+ return;
+ }
- size_t data_size = 0;
- F64 delta_time = LLFrameTimer::getTotalSeconds() - mLastSnapshotTime;
+ size_t data_size = 0;
+ F64 delta_time = LLFrameTimer::getTotalSeconds() - mLastSnapshotTime;
if (delta_time < interval)
return;
- if (mSkipSaveIfZeros)
- {
+ if (mSkipSaveIfZeros)
+ {
S32 total_events = mObjectCacheHitCount + mObjectCacheMissCrcCount + mObjectCacheMissFullCount + mObjectFullUpdates +
mObjectTerseUpdates + mObjectCacheMissRequests + mObjectCacheUpdateDupes +
mObjectCacheUpdateChanges + mObjectCacheUpdateAdds + mObjectCacheUpdateReplacements + mObjectUpdateFailures;
- if (total_events == 0)
- {
+ if (total_events == 0)
+ {
LL_DEBUGS("ILXZeroData") << "ILX: not saving zero data" << LL_ENDL;
return;
}
- }
+ }
- mLastSnapshotTime = LLFrameTimer::getTotalSeconds();
+ mLastSnapshotTime = LLFrameTimer::getTotalSeconds();
LL_DEBUGS("ILX") << "ILX: "
- << mObjectCacheHitCount << " hits, "
- << mObjectCacheMissFullCount << " full misses, "
- << mObjectCacheMissCrcCount << " crc misses, "
- << mObjectFullUpdates << " full updates, "
- << mObjectTerseUpdates << " terse updates, "
- << mObjectCacheMissRequests << " cache miss requests, "
- << mObjectCacheUpdateDupes << " cache update dupes, "
- << mObjectCacheUpdateChanges << " cache update changes, "
- << mObjectCacheUpdateAdds << " cache update adds, "
- << mObjectCacheUpdateReplacements << " cache update replacements,"
- << mObjectUpdateFailures << " update failures,"
- << mTextureFetchCount << " texture fetches, "
- << mMeshLoadedCount << " mesh loads, "
+ << mObjectCacheHitCount << " hits, "
+ << mObjectCacheMissFullCount << " full misses, "
+ << mObjectCacheMissCrcCount << " crc misses, "
+ << mObjectFullUpdates << " full updates, "
+ << mObjectTerseUpdates << " terse updates, "
+ << mObjectCacheMissRequests << " cache miss requests, "
+ << mObjectCacheUpdateDupes << " cache update dupes, "
+ << mObjectCacheUpdateChanges << " cache update changes, "
+ << mObjectCacheUpdateAdds << " cache update adds, "
+ << mObjectCacheUpdateReplacements << " cache update replacements,"
+ << mObjectUpdateFailures << " update failures,"
+ << mTextureFetchCount << " texture fetches, "
+ << mMeshLoadedCount << " mesh loads, "
<< mObjectKills << " object kills"
- << LL_ENDL;
-
- if (mStatsFile == NULL)
- {
- // Refresh settings
+ << LL_ENDL;
+
+ if (mStatsFile == NULL)
+ {
+ // Refresh settings
mInterval = gSavedSettings.getF32("StatsReportFileInterval");
mSkipSaveIfZeros = gSavedSettings.getBOOL("StatsReportSkipZeroDataSaves");
- mMaxDuration = gSavedSettings.getF32("StatsReportMaxDuration");
+ mMaxDuration = gSavedSettings.getF32("StatsReportMaxDuration");
- // Open the data file
+ // Open the data file
makeStatsFileName();
mStatsFile = LLFile::fopen(mStatsFileName, "wb");
- if (mStatsFile)
- {
+ if (mStatsFile)
+ {
LL_INFOS("ILX") << "ILX: Writing update information to " << mStatsFileName << LL_ENDL;
mFileOpenTime = LLFrameTimer::getTotalSeconds();
// Write column headers
- std::ostringstream col_headers;
- col_headers << "Time (sec),"
- << "Regions,"
- << "Active Cached Objects,"
- << "Cache Hits,"
- << "Cache Full Misses,"
- << "Cache Crc Misses,"
- << "Full Updates,"
- << "Terse Updates,"
- << "Cache Miss Requests," // Normally results in a Full Update from simulator
- << "Cache Update Dupes,"
- << "Cache Update Changes,"
- << "Cache Update Adds,"
- << "Cache Update Replacements,"
- << "Update Failures,"
- << "Texture Count,"
+ std::ostringstream col_headers;
+ col_headers << "Time (sec),"
+ << "Regions,"
+ << "Active Cached Objects,"
+ << "Cache Hits,"
+ << "Cache Full Misses,"
+ << "Cache Crc Misses,"
+ << "Full Updates,"
+ << "Terse Updates,"
+ << "Cache Miss Requests," // Normally results in a Full Update from simulator
+ << "Cache Update Dupes,"
+ << "Cache Update Changes,"
+ << "Cache Update Adds,"
+ << "Cache Update Replacements,"
+ << "Update Failures,"
+ << "Texture Count,"
<< "Mesh Load Count,"
<< "Object Kills"
<< "\n";
- data_size = col_headers.str().size();
- if (fwrite(col_headers.str().c_str(), 1, data_size, mStatsFile ) != data_size)
- {
- LL_WARNS() << "failed to write full headers to " << mStatsFileName << LL_ENDL;
- // Close the file and turn off stats logging
+ data_size = col_headers.str().size();
+ if (fwrite(col_headers.str().c_str(), 1, data_size, mStatsFile ) != data_size)
+ {
+ LL_WARNS() << "failed to write full headers to " << mStatsFileName << LL_ENDL;
+ // Close the file and turn off stats logging
closeStatsFile();
- return;
- }
- }
- else
- { // Failed to open file
- LL_WARNS() << "Couldn't open " << mStatsFileName << " for logging, turning off stats recording." << LL_ENDL;
+ return;
+ }
+ }
+ else
+ { // Failed to open file
+ LL_WARNS() << "Couldn't open " << mStatsFileName << " for logging, turning off stats recording." << LL_ENDL;
mEnableStatsLogging = false;
- return;
- }
- }
-
- std::ostringstream stats_data;
-
- stats_data << getTimeSinceStart()
- << "," << LLWorld::getInstance()->getRegionList().size()
- << "," << LLWorld::getInstance()->getNumOfActiveCachedObjects()
- << "," << mObjectCacheHitCount
- << "," << mObjectCacheMissFullCount
- << "," << mObjectCacheMissCrcCount
- << "," << mObjectFullUpdates
- << "," << mObjectTerseUpdates
- << "," << mObjectCacheMissRequests
- << "," << mObjectCacheUpdateDupes
- << "," << mObjectCacheUpdateChanges
- << "," << mObjectCacheUpdateAdds
- << "," << mObjectCacheUpdateReplacements
- << "," << mObjectUpdateFailures
- << "," << mTextureFetchCount
- << "," << mMeshLoadedCount
- << "," << mObjectKills
- << "\n";
-
- data_size = stats_data.str().size();
- if ( data_size != fwrite(stats_data.str().c_str(), 1, data_size, mStatsFile ))
- {
- LL_WARNS() << "Unable to write complete column data to " << mStatsFileName << LL_ENDL;
+ return;
+ }
+ }
+
+ std::ostringstream stats_data;
+
+ stats_data << getTimeSinceStart()
+ << "," << LLWorld::getInstance()->getRegionList().size()
+ << "," << LLWorld::getInstance()->getNumOfActiveCachedObjects()
+ << "," << mObjectCacheHitCount
+ << "," << mObjectCacheMissFullCount
+ << "," << mObjectCacheMissCrcCount
+ << "," << mObjectFullUpdates
+ << "," << mObjectTerseUpdates
+ << "," << mObjectCacheMissRequests
+ << "," << mObjectCacheUpdateDupes
+ << "," << mObjectCacheUpdateChanges
+ << "," << mObjectCacheUpdateAdds
+ << "," << mObjectCacheUpdateReplacements
+ << "," << mObjectUpdateFailures
+ << "," << mTextureFetchCount
+ << "," << mMeshLoadedCount
+ << "," << mObjectKills
+ << "\n";
+
+ data_size = stats_data.str().size();
+ if ( data_size != fwrite(stats_data.str().c_str(), 1, data_size, mStatsFile ))
+ {
+ LL_WARNS() << "Unable to write complete column data to " << mStatsFileName << LL_ENDL;
closeStatsFile();
}
- clearStats();
+ clearStats();
- if (getTimeSinceStart() >= mMaxDuration)
+ if (getTimeSinceStart() >= mMaxDuration)
{ // If file recording has been running for too long, stop it.
closeStatsFile();
}
@@ -286,12 +286,12 @@ void LLViewerStatsRecorder::writeToLog( F32 interval )
void LLViewerStatsRecorder::closeStatsFile()
{
- if (mStatsFile)
- {
+ if (mStatsFile)
+ {
LL_INFOS("ILX") << "ILX: Stopped writing update information to " << mStatsFileName << " after " << getTimeSinceStart()
<< " seconds." << LL_ENDL;
LLFile::close(mStatsFile);
- mStatsFile = NULL;
+ mStatsFile = NULL;
}
mEnableStatsLogging = false;
}
@@ -315,7 +315,7 @@ void LLViewerStatsRecorder::makeStatsFileName()
F32 LLViewerStatsRecorder::getTimeSinceStart()
{
- return (F32) (LLFrameTimer::getTotalSeconds() - mFileOpenTime);
+ return (F32) (LLFrameTimer::getTotalSeconds() - mFileOpenTime);
}