diff options
| -rw-r--r-- | indra/llui/llstatbar.cpp | 2 | ||||
| -rw-r--r-- | indra/newview/lltexturefetch.cpp | 17 | ||||
| -rw-r--r-- | indra/newview/lltexturefetch.h | 3 | ||||
| -rw-r--r-- | indra/newview/llviewerobjectlist.cpp | 5 | ||||
| -rw-r--r-- | indra/newview/llviewerobjectlist.h | 2 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/en/floater_stats.xml | 41 | 
6 files changed, 66 insertions, 4 deletions
| diff --git a/indra/llui/llstatbar.cpp b/indra/llui/llstatbar.cpp index ec4db14790..04cce7878e 100644 --- a/indra/llui/llstatbar.cpp +++ b/indra/llui/llstatbar.cpp @@ -272,7 +272,7 @@ LLRect LLStatBar::getRequiredRect()  	{  		if (mDisplayHistory)  		{ -			rect.mTop = 67; +			rect.mTop = 35 + mStatp->getNumBins();  		}  		else  		{ diff --git a/indra/newview/lltexturefetch.cpp b/indra/newview/lltexturefetch.cpp index f18aa8b4e6..92e88fcfe7 100644 --- a/indra/newview/lltexturefetch.cpp +++ b/indra/newview/lltexturefetch.cpp @@ -53,6 +53,9 @@  #include "llviewerassetstats.h"  #include "llworld.h" +LLStat LLTextureFetch::sCacheHitRate("texture_cache_hits", 128); +LLStat LLTextureFetch::sCacheReadLatency("texture_cache_read_latency", 128); +  //////////////////////////////////////////////////////////////////////////////  class LLTextureFetchWorker : public LLWorkerClass  { @@ -242,6 +245,8 @@ private:  	S32 mDecodedDiscard;  	LLFrameTimer mRequestedTimer;  	LLFrameTimer mFetchTimer; +	LLTimer			mCacheReadTimer; +	F32				mCacheReadTime;  	LLTextureCache::handle_t mCacheReadHandle;  	LLTextureCache::handle_t mCacheWriteHandle;  	U8* mBuffer; @@ -653,6 +658,7 @@ LLTextureFetchWorker::LLTextureFetchWorker(LLTextureFetch* fetcher,  	  mRequestedDiscard(-1),  	  mLoadedDiscard(-1),  	  mDecodedDiscard(-1), +	  mCacheReadTime(0.f),  	  mCacheReadHandle(LLTextureCache::nullHandle()),  	  mCacheWriteHandle(LLTextureCache::nullHandle()),  	  mBuffer(NULL), @@ -926,6 +932,7 @@ bool LLTextureFetchWorker::doWork(S32 param)  				CacheReadResponder* responder = new CacheReadResponder(mFetcher, mID, mFormattedImage);  				mCacheReadHandle = mFetcher->mTextureCache->readFromCache(filename, mID, cache_priority,  																		  offset, size, responder); +				mCacheReadTimer.reset();  			}  			else if (mUrl.empty())  			{ @@ -934,6 +941,7 @@ bool LLTextureFetchWorker::doWork(S32 param)  				CacheReadResponder* responder = new CacheReadResponder(mFetcher, mID, mFormattedImage);  				mCacheReadHandle = mFetcher->mTextureCache->readFromCache(mID, cache_priority,  																		  offset, size, responder); +				mCacheReadTimer.reset();  			}  			else if(mCanUseHTTP)  			{ @@ -986,7 +994,7 @@ bool LLTextureFetchWorker::doWork(S32 param)  			LL_DEBUGS("Texture") << mID << ": Cached. Bytes: " << mFormattedImage->getDataSize()  								 << " Size: " << llformat("%dx%d",mFormattedImage->getWidth(),mFormattedImage->getHeight())  								 << " Desired Discard: " << mDesiredDiscard << " Desired Size: " << mDesiredSize << LL_ENDL; -			// fall through +			LLTextureFetch::sCacheHitRate.addValue(100.f);  		}  		else  		{ @@ -1002,6 +1010,7 @@ bool LLTextureFetchWorker::doWork(S32 param)  				mState = LOAD_FROM_NETWORK;  			}  			// fall through +			LLTextureFetch::sCacheHitRate.addValue(0.f);  		}  	} @@ -1780,6 +1789,7 @@ void LLTextureFetchWorker::callbackDecoded(bool success, LLImageRaw* raw, LLImag  	mDecoded = TRUE;  // 	llinfos << mID << " : DECODE COMPLETE " << llendl;  	setPriority(LLWorkerThread::PRIORITY_HIGH | mWorkPriority); +	mCacheReadTime = mCacheReadTimer.getElapsedTimeF32();  }  ////////////////////////////////////////////////////////////////////////////// @@ -2092,6 +2102,11 @@ bool LLTextureFetch::getRequestFinished(const LLUUID& id, S32& discard_level,  			discard_level = worker->mDecodedDiscard;  			raw = worker->mRawImage;  			aux = worker->mAuxImage; +			F32 cache_read_time = worker->mCacheReadTime; +			if (cache_read_time != 0.f) +			{ +				sCacheReadLatency.addValue(cache_read_time * 1000.f); +			}  			res = true;  			LL_DEBUGS("Texture") << id << ": Request Finished. State: " << worker->mState << " Discard: " << discard_level << LL_ENDL;  			worker->unlockWorkMutex(); diff --git a/indra/newview/lltexturefetch.h b/indra/newview/lltexturefetch.h index 35df7d816f..710dd67e99 100644 --- a/indra/newview/lltexturefetch.h +++ b/indra/newview/lltexturefetch.h @@ -164,6 +164,9 @@ private:  	LLMutex mQueueMutex;        //to protect mRequestMap and mCommands only  	LLMutex mNetworkQueueMutex; //to protect mNetworkQueue, mHTTPTextureQueue and mCancelQueue. +	static LLStat sCacheHitRate; +	static LLStat sCacheReadLatency; +  	LLTextureCache* mTextureCache;  	LLImageDecodeThread* mImageDecodeThread;  	LLCurlRequest* mCurlGetRequest; diff --git a/indra/newview/llviewerobjectlist.cpp b/indra/newview/llviewerobjectlist.cpp index 6912faa9ec..54ccfb9aae 100644 --- a/indra/newview/llviewerobjectlist.cpp +++ b/indra/newview/llviewerobjectlist.cpp @@ -91,8 +91,9 @@ extern LLPipeline	gPipeline;  // Statics for object lookup tables.  U32						LLViewerObjectList::sSimulatorMachineIndex = 1; // Not zero deliberately, to speed up index check. -std::map<U64, U32>			LLViewerObjectList::sIPAndPortToIndex; +std::map<U64, U32>		LLViewerObjectList::sIPAndPortToIndex;  std::map<U64, LLUUID>	LLViewerObjectList::sIndexAndLocalIDToUUID; +LLStat					LLViewerObjectList::sCacheHitRate("object_cache_hits", 128);  LLViewerObjectList::LLViewerObjectList()  { @@ -542,6 +543,8 @@ void LLViewerObjectList::processObjectUpdate(LLMessageSystem *mesgsys,  			}  			justCreated = TRUE;  			mNumNewObjects++; +			sCacheHitRate.addValue(cached ? 100.f : 0.f); +  		} diff --git a/indra/newview/llviewerobjectlist.h b/indra/newview/llviewerobjectlist.h index c5f2a2c1ee..64925f46ae 100644 --- a/indra/newview/llviewerobjectlist.h +++ b/indra/newview/llviewerobjectlist.h @@ -192,6 +192,8 @@ protected:  	std::vector<OrphanInfo> mOrphanChildren;	// UUID's of orphaned objects  	S32 mNumOrphans; +	static LLStat sCacheHitRate; +  	typedef std::vector<LLPointer<LLViewerObject> > vobj_list_t;  	vobj_list_t mObjects; diff --git a/indra/newview/skins/default/xui/en/floater_stats.xml b/indra/newview/skins/default/xui/en/floater_stats.xml index 2fd932786b..9400f7b94f 100644 --- a/indra/newview/skins/default/xui/en/floater_stats.xml +++ b/indra/newview/skins/default/xui/en/floater_stats.xml @@ -149,13 +149,52 @@  				 show_per_sec="true"  				 show_bar="false">  			  </stat_bar> +       <stat_bar +				 name="object_cache_hits" +				 label="Object Cache Hit Rate" +				 stat="object_cache_hits" +				 bar_min="0" +				 bar_max="100" +         unit_label="%" +				 tick_spacing="20" +				 label_spacing="20" +				 show_history="true" +         show_per_sec="false" +				 show_bar="false"> +        </stat_bar>  			</stat_view>          <!--Texture Stats-->  			<stat_view  			   name="texture"  			   label="Texture"  			   show_label="true"> -			  <stat_bar +        <stat_bar +				 name="texture_cache_hits" +				 label="Cache Hit Rate" +				 stat="texture_cache_hits" +				 bar_min="0.f" +				 bar_max="100.f" +         unit_label="%" +				 tick_spacing="20" +				 label_spacing="20" +				 show_history="true" +         show_per_sec="false" +				 show_bar="false"> +        </stat_bar> +        <stat_bar +				 name="texture_cache_read_latency" +				 label="Cache Read Latency" +         unit_label="msec" +				 stat="texture_cache_read_latency" +				 bar_min="0.f" +				 bar_max="1000.f" +				 tick_spacing="100" +				 label_spacing="200" +				 show_history="true" +         show_per_sec="false" +				 show_bar="false"> +        </stat_bar> +        <stat_bar  				 name="numimagesstat"  				 label="Count"  				 stat="numimagesstat"  | 
