ESC-154 ESC-156 Integrating metrics collector into viewer.
After discussions, renamed 'QAModeMetricsSubmetrics' to 'QAModeMetrics' and confirmed that LLCachedControl<> is the way to go. Moved the resulting flag out of LLViewerAssetStats (where it didn't belong) and it lives in both LLAppViewer and LLTextureFetch where it does belong.meow-7.2.2
parent
9ec3334184
commit
3962b155b4
|
|
@ -339,6 +339,7 @@ LLAppViewer::LLUpdaterInfo *LLAppViewer::sUpdaterInfo = NULL ;
|
|||
static const F32 METRICS_INTERVAL_DEFAULT = 600.0;
|
||||
static const F32 METRICS_INTERVAL_QA = 30.0;
|
||||
static F32 app_metrics_interval = METRICS_INTERVAL_DEFAULT;
|
||||
static bool app_metrics_qa_mode = false;
|
||||
|
||||
void idle_afk_check()
|
||||
{
|
||||
|
|
@ -667,17 +668,16 @@ bool LLAppViewer::init()
|
|||
{
|
||||
// Viewer metrics initialization
|
||||
static LLCachedControl<BOOL> metrics_submode(gSavedSettings,
|
||||
"QAModeMetricsSubmode",
|
||||
"QAModeMetrics",
|
||||
FALSE,
|
||||
"Enables metrics submode when QAMode is also enabled");
|
||||
"Enables QA features (logging, faster cycling) for metrics collector");
|
||||
|
||||
bool qa_mode(false);
|
||||
if (gSavedSettings.getBOOL("QAMode") && metrics_submode)
|
||||
if (metrics_submode)
|
||||
{
|
||||
app_metrics_qa_mode = true;
|
||||
app_metrics_interval = METRICS_INTERVAL_QA;
|
||||
qa_mode = true;
|
||||
}
|
||||
LLViewerAssetStatsFF::init(qa_mode);
|
||||
LLViewerAssetStatsFF::init();
|
||||
}
|
||||
|
||||
initThreads();
|
||||
|
|
@ -1760,7 +1760,10 @@ bool LLAppViewer::initThreads()
|
|||
// Image decoding
|
||||
LLAppViewer::sImageDecodeThread = new LLImageDecodeThread(enable_threads && true);
|
||||
LLAppViewer::sTextureCache = new LLTextureCache(enable_threads && true);
|
||||
LLAppViewer::sTextureFetch = new LLTextureFetch(LLAppViewer::getTextureCache(), sImageDecodeThread, enable_threads && true);
|
||||
LLAppViewer::sTextureFetch = new LLTextureFetch(LLAppViewer::getTextureCache(),
|
||||
sImageDecodeThread,
|
||||
enable_threads && true,
|
||||
app_metrics_qa_mode);
|
||||
LLImage::initClass();
|
||||
|
||||
if (LLFastTimer::sLog || LLFastTimer::sMetricLog)
|
||||
|
|
|
|||
|
|
@ -1774,7 +1774,7 @@ bool LLTextureFetchWorker::writeToCacheComplete()
|
|||
//////////////////////////////////////////////////////////////////////////////
|
||||
// public
|
||||
|
||||
LLTextureFetch::LLTextureFetch(LLTextureCache* cache, LLImageDecodeThread* imagedecodethread, bool threaded)
|
||||
LLTextureFetch::LLTextureFetch(LLTextureCache* cache, LLImageDecodeThread* imagedecodethread, bool threaded, bool qa_mode)
|
||||
: LLWorkerThread("TextureFetch", threaded),
|
||||
mDebugCount(0),
|
||||
mDebugPause(FALSE),
|
||||
|
|
@ -1786,7 +1786,8 @@ LLTextureFetch::LLTextureFetch(LLTextureCache* cache, LLImageDecodeThread* image
|
|||
mImageDecodeThread(imagedecodethread),
|
||||
mTextureBandwidth(0),
|
||||
mHTTPTextureBits(0),
|
||||
mCurlGetRequest(NULL)
|
||||
mCurlGetRequest(NULL),
|
||||
mQAMode(qa_mode)
|
||||
{
|
||||
mMaxBandwidth = gSavedSettings.getF32("ThrottleBandwidthKBPS");
|
||||
mTextureInfo.setUpLogging(gSavedSettings.getBOOL("LogTextureDownloadsToViewerLog"), gSavedSettings.getBOOL("LogTextureDownloadsToSimulator"), gSavedSettings.getU32("TextureLoggingThreshold"));
|
||||
|
|
@ -2833,7 +2834,7 @@ TFReqSendMetrics::doWork(LLTextureFetch * fetcher)
|
|||
}
|
||||
|
||||
// In QA mode, Metrics submode, log the result for ease of testing
|
||||
if (gViewerAssetStatsThread1->isQAMode())
|
||||
if (fetcher->isQAMode())
|
||||
{
|
||||
LL_INFOS("QAViewerMetrics") << thread1_stats << LL_ENDL;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -49,7 +49,7 @@ class LLTextureFetch : public LLWorkerThread
|
|||
friend class HTTPGetResponder;
|
||||
|
||||
public:
|
||||
LLTextureFetch(LLTextureCache* cache, LLImageDecodeThread* imagedecodethread, bool threaded);
|
||||
LLTextureFetch(LLTextureCache* cache, LLImageDecodeThread* imagedecodethread, bool threaded, bool qa_mode);
|
||||
~LLTextureFetch();
|
||||
|
||||
/*virtual*/ S32 update(U32 max_time_ms);
|
||||
|
|
@ -90,8 +90,10 @@ public:
|
|||
void commandSendMetrics(const std::string & caps_url, LLSD * report_main);
|
||||
void commandDataBreak();
|
||||
|
||||
LLCurlRequest & getCurlRequest() { return *mCurlGetRequest; }
|
||||
|
||||
LLCurlRequest & getCurlRequest() { return *mCurlGetRequest; }
|
||||
|
||||
bool isQAMode() const { return mQAMode; }
|
||||
|
||||
protected:
|
||||
void addToNetworkQueue(LLTextureFetchWorker* worker);
|
||||
void removeFromNetworkQueue(LLTextureFetchWorker* worker, bool cancel);
|
||||
|
|
@ -109,8 +111,33 @@ private:
|
|||
/*virtual*/ void threadedUpdate(void);
|
||||
|
||||
// Metrics command helpers
|
||||
/**
|
||||
* Enqueues a command request at the end of the command queue
|
||||
* and wakes up the thread as needed.
|
||||
*
|
||||
* Takes ownership of the TFRequest object.
|
||||
*
|
||||
* Method locks the command queue.
|
||||
*/
|
||||
void cmdEnqueue(TFRequest *);
|
||||
|
||||
/**
|
||||
* Returns the first TFRequest object in the command queue or
|
||||
* NULL if none is present.
|
||||
*
|
||||
* Caller acquires ownership of the object and must dispose of it.
|
||||
*
|
||||
* Method locks the command queue.
|
||||
*/
|
||||
TFRequest * cmdDequeue();
|
||||
|
||||
/**
|
||||
* Processes the first command in the queue disposing of the
|
||||
* request on completion. Successive calls are needed to perform
|
||||
* additional commands.
|
||||
*
|
||||
* Method locks the command queue.
|
||||
*/
|
||||
void cmdDoWork();
|
||||
|
||||
public:
|
||||
|
|
@ -151,6 +178,9 @@ private:
|
|||
typedef std::vector<TFRequest *> command_queue_t;
|
||||
command_queue_t mCommands;
|
||||
|
||||
// If true, modifies some behaviors that help with QA tasks.
|
||||
const bool mQAMode;
|
||||
|
||||
public:
|
||||
// A probabilistically-correct indicator that the current
|
||||
// attempt to log metrics follows a break in the metrics stream
|
||||
|
|
|
|||
|
|
@ -129,8 +129,7 @@ LLViewerAssetStats::PerRegionStats::accumulateTime(duration_t now)
|
|||
// ------------------------------------------------------
|
||||
// LLViewerAssetStats class definition
|
||||
// ------------------------------------------------------
|
||||
LLViewerAssetStats::LLViewerAssetStats(bool qa_mode)
|
||||
: mQAMode(qa_mode)
|
||||
LLViewerAssetStats::LLViewerAssetStats()
|
||||
{
|
||||
reset();
|
||||
}
|
||||
|
|
@ -540,15 +539,15 @@ record_response_thread1(LLViewerAssetType::EType at, bool with_http, bool is_tem
|
|||
|
||||
|
||||
void
|
||||
init(bool qa_mode)
|
||||
init()
|
||||
{
|
||||
if (! gViewerAssetStatsMain)
|
||||
{
|
||||
gViewerAssetStatsMain = new LLViewerAssetStats(qa_mode);
|
||||
gViewerAssetStatsMain = new LLViewerAssetStats();
|
||||
}
|
||||
if (! gViewerAssetStatsThread1)
|
||||
{
|
||||
gViewerAssetStatsThread1 = new LLViewerAssetStats(qa_mode);
|
||||
gViewerAssetStatsThread1 = new LLViewerAssetStats();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -140,7 +140,7 @@ public:
|
|||
};
|
||||
|
||||
public:
|
||||
LLViewerAssetStats(bool qa_mode);
|
||||
LLViewerAssetStats();
|
||||
// Default destructor is correct.
|
||||
LLViewerAssetStats & operator=(const LLViewerAssetStats &); // Not defined
|
||||
|
||||
|
|
@ -197,10 +197,6 @@ public:
|
|||
// final result is undefined (little defensive action).
|
||||
static void mergeRegionsLLSD(const LLSD & src, LLSD & dst);
|
||||
|
||||
// QA mode is established during initialization so we don't
|
||||
// touch LLSD at runtime.
|
||||
bool isQAMode() const { return mQAMode; }
|
||||
|
||||
protected:
|
||||
typedef std::map<LLUUID, LLPointer<PerRegionStats> > PerRegionContainer;
|
||||
|
||||
|
|
@ -219,9 +215,6 @@ protected:
|
|||
|
||||
// Time of last reset
|
||||
duration_t mResetTimestamp;
|
||||
|
||||
// QA Mode
|
||||
const bool mQAMode;
|
||||
};
|
||||
|
||||
|
||||
|
|
@ -252,7 +245,7 @@ namespace LLViewerAssetStatsFF
|
|||
* you'll likely get away with calling it afterwards. cleanup() should only be
|
||||
* called after threads are shutdown to prevent races on the global pointers.
|
||||
*/
|
||||
void init(bool qa_mode);
|
||||
void init();
|
||||
|
||||
void cleanup();
|
||||
|
||||
|
|
|
|||
|
|
@ -133,7 +133,7 @@ namespace tut
|
|||
{
|
||||
ensure("Global gViewerAssetStatsMain should be NULL", (NULL == gViewerAssetStatsMain));
|
||||
|
||||
LLViewerAssetStats * it = new LLViewerAssetStats(false);
|
||||
LLViewerAssetStats * it = new LLViewerAssetStats();
|
||||
|
||||
ensure("Global gViewerAssetStatsMain should still be NULL", (NULL == gViewerAssetStatsMain));
|
||||
|
||||
|
|
@ -174,7 +174,7 @@ namespace tut
|
|||
template<> template<>
|
||||
void tst_viewerassetstats_index_object_t::test<3>()
|
||||
{
|
||||
LLViewerAssetStats * it = new LLViewerAssetStats(false);
|
||||
LLViewerAssetStats * it = new LLViewerAssetStats();
|
||||
it->setRegionID(region1);
|
||||
|
||||
LLSD sd = it->asLLSD();
|
||||
|
|
@ -193,7 +193,7 @@ namespace tut
|
|||
template<> template<>
|
||||
void tst_viewerassetstats_index_object_t::test<4>()
|
||||
{
|
||||
gViewerAssetStatsMain = new LLViewerAssetStats(false);
|
||||
gViewerAssetStatsMain = new LLViewerAssetStats();
|
||||
LLViewerAssetStatsFF::set_region_main(region1);
|
||||
|
||||
LLViewerAssetStatsFF::record_enqueue_main(LLViewerAssetType::AT_TEXTURE, false, false);
|
||||
|
|
@ -230,8 +230,8 @@ namespace tut
|
|||
template<> template<>
|
||||
void tst_viewerassetstats_index_object_t::test<5>()
|
||||
{
|
||||
gViewerAssetStatsThread1 = new LLViewerAssetStats(false);
|
||||
gViewerAssetStatsMain = new LLViewerAssetStats(false);
|
||||
gViewerAssetStatsThread1 = new LLViewerAssetStats();
|
||||
gViewerAssetStatsMain = new LLViewerAssetStats();
|
||||
LLViewerAssetStatsFF::set_region_main(region1);
|
||||
|
||||
LLViewerAssetStatsFF::record_enqueue_main(LLViewerAssetType::AT_TEXTURE, false, false);
|
||||
|
|
@ -272,7 +272,7 @@ namespace tut
|
|||
template<> template<>
|
||||
void tst_viewerassetstats_index_object_t::test<6>()
|
||||
{
|
||||
gViewerAssetStatsMain = new LLViewerAssetStats(false);
|
||||
gViewerAssetStatsMain = new LLViewerAssetStats();
|
||||
|
||||
LLViewerAssetStatsFF::set_region_main(region1);
|
||||
|
||||
|
|
@ -329,7 +329,7 @@ namespace tut
|
|||
template<> template<>
|
||||
void tst_viewerassetstats_index_object_t::test<7>()
|
||||
{
|
||||
gViewerAssetStatsMain = new LLViewerAssetStats(false);
|
||||
gViewerAssetStatsMain = new LLViewerAssetStats();
|
||||
|
||||
LLViewerAssetStatsFF::set_region_main(region1);
|
||||
|
||||
|
|
@ -399,8 +399,8 @@ namespace tut
|
|||
template<> template<>
|
||||
void tst_viewerassetstats_index_object_t::test<8>()
|
||||
{
|
||||
gViewerAssetStatsThread1 = new LLViewerAssetStats(false);
|
||||
gViewerAssetStatsMain = new LLViewerAssetStats(false);
|
||||
gViewerAssetStatsThread1 = new LLViewerAssetStats();
|
||||
gViewerAssetStatsMain = new LLViewerAssetStats();
|
||||
LLViewerAssetStatsFF::set_region_main(region1);
|
||||
|
||||
LLViewerAssetStatsFF::record_enqueue_main(LLViewerAssetType::AT_TEXTURE, false, false);
|
||||
|
|
|
|||
Loading…
Reference in New Issue