diff options
author | Nat Goodspeed <nat@lindenlab.com> | 2024-05-15 12:18:31 -0400 |
---|---|---|
committer | Nat Goodspeed <nat@lindenlab.com> | 2024-05-15 12:18:31 -0400 |
commit | 7ccf02515ad3f9e3bf795d651fe4b3c0d773f353 (patch) | |
tree | c4adc897c07f652e617e91fbf41c12b823acc808 /indra/newview/llviewerstatsrecorder.cpp | |
parent | 1abf5f18d6afc7ae9e1b1562b92e5c1ce33b722f (diff) | |
parent | e7eced3c87310b15ac20cc3cd470d67686104a14 (diff) |
Merge commit 'e7eced3' into lua-timers for whitespace fixes.
Diffstat (limited to 'indra/newview/llviewerstatsrecorder.cpp')
-rw-r--r-- | indra/newview/llviewerstatsrecorder.cpp | 324 |
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); } |