From cbd4c0196fc32f94c6f9a41d161b65f4609985d4 Mon Sep 17 00:00:00 2001 From: andreykproductengine Date: Thu, 17 Aug 2017 15:32:01 +0300 Subject: SL-683 Instrument viewer cache --- indra/newview/lltextureinfo.cpp | 48 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 47 insertions(+), 1 deletion(-) (limited to 'indra/newview/lltextureinfo.cpp') diff --git a/indra/newview/lltextureinfo.cpp b/indra/newview/lltextureinfo.cpp index 473d8ce709..5f1e14e406 100644 --- a/indra/newview/lltextureinfo.cpp +++ b/indra/newview/lltextureinfo.cpp @@ -26,10 +26,19 @@ #include "llviewerprecompiledheaders.h" +#include "llagent.h" +#include "llmeshrepository.h" +#include "llsdutil.h" #include "lltextureinfo.h" +#include "lltexturecache.h" +#include "lltexturefetch.h" #include "lltexturestats.h" -#include "llviewercontrol.h" #include "lltrace.h" +#include "llviewercontrol.h" +#include "llviewerregion.h" +#include "llviewerstats.h" +#include "llvocache.h" +#include "llworld.h" static LLTrace::CountStatHandle sTextureDownloadsStarted("texture_downloads_started", "number of texture downloads initiated"); static LLTrace::CountStatHandle sTextureDownloadsCompleted("texture_downloads_completed", "number of texture downloads completed"); @@ -175,6 +184,43 @@ void LLTextureInfo::setRequestCompleteTimeAndLog(const LLUUID& id, U64Microsecon endTime << completeTime; texture_data["end_time"] = endTime.str(); texture_data["averages"] = getAverages(); + + // Texture cache + LLSD texture_cache; + U32 cache_read = 0, cache_write = 0, res_wait = 0; + F64 cache_hit_rate = 0; + LLAppViewer::getTextureFetch()->getStateStats(&cache_read, &cache_write, &res_wait); + if (cache_read > 0 || cache_write > 0) + { + cache_hit_rate = cache_read / (cache_read + cache_write); + } + texture_cache["cache_read"] = LLSD::Integer(cache_read); + texture_cache["cache_write"] = LLSD::Integer(cache_write); + texture_cache["hit_rate"] = LLSD::Real(cache_hit_rate); + texture_cache["entries"] = LLSD::Integer(LLAppViewer::getTextureCache()->getEntries()); + texture_cache["space_max"] = ll_sd_from_U64((U64)LLAppViewer::getTextureCache()->getMaxUsage().value()); // bytes + texture_cache["space_used"] = ll_sd_from_U64((U64)LLAppViewer::getTextureCache()->getUsage().value()); // bytes + texture_data["texture_cache"] = texture_cache; + + // VO and mesh cache + LLSD object_cache; + object_cache["vo_entries_max"] = LLSD::Integer(LLVOCache::getInstance()->getCacheEntriesMax()); + object_cache["vo_entries_curent"] = LLSD::Integer(LLVOCache::getInstance()->getCacheEntries()); + object_cache["vo_active_entries"] = LLSD::Integer(LLWorld::getInstance()->getNumOfActiveCachedObjects()); + U64 region_hit_count = gAgent.getRegion() != NULL ? gAgent.getRegion()->getRegionCacheHitCount() : 0; + U64 region_miss_count = gAgent.getRegion() != NULL ? gAgent.getRegion()->getRegionCacheMissCount() : 0; + F64 region_vocache_hit_rate = 0; + if (region_hit_count > 0 || region_miss_count > 0) + { + region_vocache_hit_rate = region_hit_count / (region_hit_count + region_miss_count); + } + object_cache["vo_region_hitcount"] = ll_sd_from_U64(region_hit_count); + object_cache["vo_region_misscount"] = ll_sd_from_U64(region_miss_count); + object_cache["vo_region_hitrate"] = LLSD::Real(region_vocache_hit_rate); + object_cache["mesh_reads"] = LLSD::Integer(LLMeshRepository::sCacheReads); + object_cache["mesh_writes"] = LLSD::Integer(LLMeshRepository::sCacheWrites); + texture_data["object_cache"] = object_cache; + send_texture_stats_to_sim(texture_data); resetTextureStatistics(); } -- cgit v1.2.3 From 5cd56406ab6d36e6b90e589f58fc4aa578edbdf1 Mon Sep 17 00:00:00 2001 From: andreykproductengine Date: Wed, 20 Sep 2017 15:53:34 +0300 Subject: SL-683 Fixed Logging parameters not taking effect immediately --- indra/newview/lltextureinfo.cpp | 143 ++++++++++++++++++++-------------------- 1 file changed, 73 insertions(+), 70 deletions(-) (limited to 'indra/newview/lltextureinfo.cpp') diff --git a/indra/newview/lltextureinfo.cpp b/indra/newview/lltextureinfo.cpp index 5f1e14e406..e79bb62a52 100644 --- a/indra/newview/lltextureinfo.cpp +++ b/indra/newview/lltextureinfo.cpp @@ -46,10 +46,8 @@ static LLTrace::CountStatHandle sTextureDataDownloaded("texture_data_ static LLTrace::CountStatHandle sTexureDownloadTime("texture_download_time", "amount of time spent fetching textures"); LLTextureInfo::LLTextureInfo(bool postponeStartRecoreder) : - mLogTextureDownloadsToViewerLog(false), - mLogTextureDownloadsToSimulator(false), - mTextureDownloadProtocol("NONE"), - mTextureLogThreshold(LLUnits::Kilobytes::fromValue(100)) + mLoggingEnabled(false), + mTextureDownloadProtocol("NONE") { if (!postponeStartRecoreder) { @@ -57,11 +55,9 @@ LLTextureInfo::LLTextureInfo(bool postponeStartRecoreder) : } } -void LLTextureInfo::setUpLogging(bool writeToViewerLog, bool sendToSim, U32Bytes textureLogThreshold) +void LLTextureInfo::setLogging(bool log_info) { - mLogTextureDownloadsToViewerLog = writeToViewerLog; - mLogTextureDownloadsToSimulator = sendToSim; - mTextureLogThreshold = U32Bytes(textureLogThreshold); + mLoggingEnabled = log_info; } LLTextureInfo::~LLTextureInfo() @@ -156,73 +152,80 @@ void LLTextureInfo::setRequestCompleteTimeAndLog(const LLUUID& id, U64Microsecon break; } - if (mLogTextureDownloadsToViewerLog) + if (mLoggingEnabled) { - LL_INFOS() << "texture=" << id - << " start=" << details.mStartTime - << " end=" << details.mCompleteTime - << " size=" << details.mSize - << " offset=" << details.mOffset - << " length=" << U32Milliseconds(details.mCompleteTime - details.mStartTime) - << " protocol=" << protocol - << LL_ENDL; - } + static LLCachedControl log_to_viewer_log(gSavedSettings, "LogTextureDownloadsToViewerLog", false); + static LLCachedControl log_to_simulator(gSavedSettings, "LogTextureDownloadsToSimulator", false); + static LLCachedControl texture_log_threshold(gSavedSettings, "TextureLoggingThreshold", 1); - if(mLogTextureDownloadsToSimulator) - { - add(sTextureDataDownloaded, details.mSize); - add(sTexureDownloadTime, details.mCompleteTime - details.mStartTime); - add(sTextureDownloadsCompleted, 1); - mTextureDownloadProtocol = protocol; - if (mRecording.getSum(sTextureDataDownloaded) >= mTextureLogThreshold) + if (log_to_viewer_log) { - LLSD texture_data; - std::stringstream startTime; - startTime << mCurrentStatsBundleStartTime; - texture_data["start_time"] = startTime.str(); - std::stringstream endTime; - endTime << completeTime; - texture_data["end_time"] = endTime.str(); - texture_data["averages"] = getAverages(); - - // Texture cache - LLSD texture_cache; - U32 cache_read = 0, cache_write = 0, res_wait = 0; - F64 cache_hit_rate = 0; - LLAppViewer::getTextureFetch()->getStateStats(&cache_read, &cache_write, &res_wait); - if (cache_read > 0 || cache_write > 0) - { - cache_hit_rate = cache_read / (cache_read + cache_write); - } - texture_cache["cache_read"] = LLSD::Integer(cache_read); - texture_cache["cache_write"] = LLSD::Integer(cache_write); - texture_cache["hit_rate"] = LLSD::Real(cache_hit_rate); - texture_cache["entries"] = LLSD::Integer(LLAppViewer::getTextureCache()->getEntries()); - texture_cache["space_max"] = ll_sd_from_U64((U64)LLAppViewer::getTextureCache()->getMaxUsage().value()); // bytes - texture_cache["space_used"] = ll_sd_from_U64((U64)LLAppViewer::getTextureCache()->getUsage().value()); // bytes - texture_data["texture_cache"] = texture_cache; - - // VO and mesh cache - LLSD object_cache; - object_cache["vo_entries_max"] = LLSD::Integer(LLVOCache::getInstance()->getCacheEntriesMax()); - object_cache["vo_entries_curent"] = LLSD::Integer(LLVOCache::getInstance()->getCacheEntries()); - object_cache["vo_active_entries"] = LLSD::Integer(LLWorld::getInstance()->getNumOfActiveCachedObjects()); - U64 region_hit_count = gAgent.getRegion() != NULL ? gAgent.getRegion()->getRegionCacheHitCount() : 0; - U64 region_miss_count = gAgent.getRegion() != NULL ? gAgent.getRegion()->getRegionCacheMissCount() : 0; - F64 region_vocache_hit_rate = 0; - if (region_hit_count > 0 || region_miss_count > 0) + LL_INFOS() << "texture=" << id + << " start=" << details.mStartTime + << " end=" << details.mCompleteTime + << " size=" << details.mSize + << " offset=" << details.mOffset + << " length=" << U32Milliseconds(details.mCompleteTime - details.mStartTime) + << " protocol=" << protocol + << LL_ENDL; + } + + if(log_to_simulator) + { + add(sTextureDataDownloaded, details.mSize); + add(sTexureDownloadTime, details.mCompleteTime - details.mStartTime); + add(sTextureDownloadsCompleted, 1); + mTextureDownloadProtocol = protocol; + if (mRecording.getSum(sTextureDataDownloaded) >= U32Bytes(texture_log_threshold)) { - region_vocache_hit_rate = region_hit_count / (region_hit_count + region_miss_count); + LLSD texture_data; + std::stringstream startTime; + startTime << mCurrentStatsBundleStartTime; + texture_data["start_time"] = startTime.str(); + std::stringstream endTime; + endTime << completeTime; + texture_data["end_time"] = endTime.str(); + texture_data["averages"] = getAverages(); + + // Texture cache + LLSD texture_cache; + U32 cache_read = 0, cache_write = 0, res_wait = 0; + F64 cache_hit_rate = 0; + LLAppViewer::getTextureFetch()->getStateStats(&cache_read, &cache_write, &res_wait); + if (cache_read > 0 || cache_write > 0) + { + cache_hit_rate = cache_read / (cache_read + cache_write); + } + texture_cache["cache_read"] = LLSD::Integer(cache_read); + texture_cache["cache_write"] = LLSD::Integer(cache_write); + texture_cache["hit_rate"] = LLSD::Real(cache_hit_rate); + texture_cache["entries"] = LLSD::Integer(LLAppViewer::getTextureCache()->getEntries()); + texture_cache["space_max"] = ll_sd_from_U64((U64)LLAppViewer::getTextureCache()->getMaxUsage().value()); // bytes + texture_cache["space_used"] = ll_sd_from_U64((U64)LLAppViewer::getTextureCache()->getUsage().value()); // bytes + texture_data["texture_cache"] = texture_cache; + + // VO and mesh cache + LLSD object_cache; + object_cache["vo_entries_max"] = LLSD::Integer(LLVOCache::getInstance()->getCacheEntriesMax()); + object_cache["vo_entries_curent"] = LLSD::Integer(LLVOCache::getInstance()->getCacheEntries()); + object_cache["vo_active_entries"] = LLSD::Integer(LLWorld::getInstance()->getNumOfActiveCachedObjects()); + U64 region_hit_count = gAgent.getRegion() != NULL ? gAgent.getRegion()->getRegionCacheHitCount() : 0; + U64 region_miss_count = gAgent.getRegion() != NULL ? gAgent.getRegion()->getRegionCacheMissCount() : 0; + F64 region_vocache_hit_rate = 0; + if (region_hit_count > 0 || region_miss_count > 0) + { + region_vocache_hit_rate = region_hit_count / (region_hit_count + region_miss_count); + } + object_cache["vo_region_hitcount"] = ll_sd_from_U64(region_hit_count); + object_cache["vo_region_misscount"] = ll_sd_from_U64(region_miss_count); + object_cache["vo_region_hitrate"] = LLSD::Real(region_vocache_hit_rate); + object_cache["mesh_reads"] = LLSD::Integer(LLMeshRepository::sCacheReads); + object_cache["mesh_writes"] = LLSD::Integer(LLMeshRepository::sCacheWrites); + texture_data["object_cache"] = object_cache; + + send_texture_stats_to_sim(texture_data); + resetTextureStatistics(); } - object_cache["vo_region_hitcount"] = ll_sd_from_U64(region_hit_count); - object_cache["vo_region_misscount"] = ll_sd_from_U64(region_miss_count); - object_cache["vo_region_hitrate"] = LLSD::Real(region_vocache_hit_rate); - object_cache["mesh_reads"] = LLSD::Integer(LLMeshRepository::sCacheReads); - object_cache["mesh_writes"] = LLSD::Integer(LLMeshRepository::sCacheWrites); - texture_data["object_cache"] = object_cache; - - send_texture_stats_to_sim(texture_data); - resetTextureStatistics(); } } -- cgit v1.2.3