diff --git a/indra/llcommon/lldeadmantimer.cpp b/indra/llcommon/lldeadmantimer.cpp
index 2ba757d2afd044cdeb0bf7256b7b05eab4f15483..7d9097e344313044507134d781fa3c48dfd756f9 100644
--- a/indra/llcommon/lldeadmantimer.cpp
+++ b/indra/llcommon/lldeadmantimer.cpp
@@ -110,13 +110,13 @@ void LLDeadmanTimer::stop(time_type now)
 
 
 bool LLDeadmanTimer::isExpired(time_type now, F64 & started, F64 & stopped, U64 & count,
-							   LLProcInfo::time_type & user_cpu, LLProcInfo::time_type & sys_cpu)
+							   U64 & user_cpu, U64 & sys_cpu)
 {
 	const bool status(isExpired(now, started, stopped, count));
 	if (status)
 	{
-		user_cpu = mUEndCPU - mUStartCPU;
-		sys_cpu = mSEndCPU - mSStartCPU;
+		user_cpu = U64(mUEndCPU - mUStartCPU);
+		sys_cpu = U64(mSEndCPU - mSStartCPU);
 	}
 	return status;
 }
diff --git a/indra/llcommon/lldeadmantimer.h b/indra/llcommon/lldeadmantimer.h
index a6022852b9f223b05f1b89af4501806720798c0d..0dde16b7175f4c728b9bdf6962b7f10ba812f7b0 100644
--- a/indra/llcommon/lldeadmantimer.h
+++ b/indra/llcommon/lldeadmantimer.h
@@ -190,7 +190,7 @@ class LL_COMMON_API LLDeadmanTimer
 	///					left unchanged.
 	///
 	bool isExpired(time_type now, F64 & started, F64 & stopped, U64 & count,
-				   LLProcInfo::time_type & user_cpu, LLProcInfo::time_type & sys_cpu);
+				   U64 & user_cpu, U64 & sys_cpu);
 
 	/// Identical to the six-arugment form except is does without the
 	/// CPU time return if the caller isn't interested in it.
diff --git a/indra/llcommon/tests/lldeadmantimer_test.cpp b/indra/llcommon/tests/lldeadmantimer_test.cpp
index a4ec76a016d9eb123000ecd3858637111607be37..7fd2dde6e09390da48bc894b33e8c272376c2038 100644
--- a/indra/llcommon/tests/lldeadmantimer_test.cpp
+++ b/indra/llcommon/tests/lldeadmantimer_test.cpp
@@ -81,16 +81,15 @@ void deadmantimer_object_t::test<1>()
 	{
 		// With cpu metrics
 		F64 started(42.0), stopped(97.0);
-		U64 count(U64L(8));
-		LLProcInfo::time_type user_cpu(29000), sys_cpu(57000);
+		U64 count(U64L(8)), user_cpu(29000), sys_cpu(57000);
 		LLDeadmanTimer timer(10.0, true);
 
 		ensure_equals("WCM isExpired() returns false after ctor()", timer.isExpired(0, started, stopped, count, user_cpu, sys_cpu), false);
 		ensure_approximately_equals("WCM t1 - isExpired() does not modify started", started, F64(42.0), 2);
 		ensure_approximately_equals("WCM t1 - isExpired() does not modify stopped", stopped, F64(97.0), 2);
 		ensure_equals("WCM t1 - isExpired() does not modify count", count, U64L(8));
-		ensure_equals("WCM t1 - isExpired() does not modify user_cpu", user_cpu, LLProcInfo::time_type(29000));
-		ensure_equals("WCM t1 - isExpired() does not modify sys_cpu", sys_cpu, LLProcInfo::time_type(57000));
+		ensure_equals("WCM t1 - isExpired() does not modify user_cpu", user_cpu, U64L(29000));
+		ensure_equals("WCM t1 - isExpired() does not modify sys_cpu", sys_cpu, U64L(57000));
 	}
 }
 
@@ -112,8 +111,7 @@ void deadmantimer_object_t::test<2>()
 	{
 		// With cpu metrics
 		F64 started(42.0), stopped(97.0);
-		U64 count(U64L(8));
-		LLProcInfo::time_type user_cpu(29000), sys_cpu(57000);
+		U64 count(U64L(8)), user_cpu(29000), sys_cpu(57000);
 		LLDeadmanTimer timer(0.0, true);			// Zero is pre-expired
 		
 		ensure_equals("WCM isExpired() still returns false with 0.0 time ctor()",
@@ -141,8 +139,7 @@ void deadmantimer_object_t::test<3>()
 	{
 		// With cpu metrics
 		F64 started(42.0), stopped(97.0);
-		U64 count(U64L(8));
-		LLProcInfo::time_type user_cpu(29000), sys_cpu(57000);
+		U64 count(U64L(8)), user_cpu(29000), sys_cpu(57000);
 		LLDeadmanTimer timer(0.0, true);
 
 		timer.start(0);
@@ -172,8 +169,7 @@ void deadmantimer_object_t::test<4>()
 	{
 		// With cpu metrics
 		F64 started(42.0), stopped(97.0);
-		U64 count(U64L(8));
-		LLProcInfo::time_type user_cpu(29000), sys_cpu(57000);
+		U64 count(U64L(8)), user_cpu(29000), sys_cpu(57000);
 		LLDeadmanTimer timer(0.0, true);
 	
 		timer.start(0);
@@ -205,8 +201,7 @@ void deadmantimer_object_t::test<5>()
 	{
 		// With cpu metrics
 		F64 started(42.0), stopped(97.0);
-		U64 count(U64L(8));
-		LLProcInfo::time_type user_cpu(29000), sys_cpu(57000);
+		U64 count(U64L(8)), user_cpu(29000), sys_cpu(57000);
 		LLDeadmanTimer timer(10.0, true);
 	
 		timer.start(0);
@@ -215,8 +210,8 @@ void deadmantimer_object_t::test<5>()
 		ensure_approximately_equals("WCM t5 - isExpired() does not modify started", started, F64(42.0), 2);
 		ensure_approximately_equals("WCM t5 - isExpired() does not modify stopped", stopped, F64(97.0), 2);
 		ensure_equals("WCM t5 - isExpired() does not modify count", count, U64L(8));
-		ensure_equals("WCM t5 - isExpired() does not modify user_cpu", user_cpu, LLProcInfo::time_type(29000));
-		ensure_equals("WCM t5 - isExpired() does not modify sys_cpu", sys_cpu, LLProcInfo::time_type(57000));
+		ensure_equals("WCM t5 - isExpired() does not modify user_cpu", user_cpu, U64L(29000));
+		ensure_equals("WCM t5 - isExpired() does not modify sys_cpu", sys_cpu, U64L(57000));
 	}
 }
 
@@ -247,8 +242,7 @@ void deadmantimer_object_t::test<6>()
 	{
 		// With cpu metrics
 		F64 started(42.0), stopped(97.0);
-		U64 count(U64L(8));
-		LLProcInfo::time_type user_cpu(29000), sys_cpu(57000);
+		U64 count(U64L(8)), user_cpu(29000), sys_cpu(57000);
 		LLDeadmanTimer timer(10.0, true);
 
 		// Would like to do subtraction on current time but can't because
@@ -263,8 +257,8 @@ void deadmantimer_object_t::test<6>()
 		ensure_approximately_equals("WCM t6 - isExpired() does not modify started", started, F64(42.0), 2);
 		ensure_approximately_equals("WCM t6 - isExpired() does not modify stopped", stopped, F64(97.0), 2);
 		ensure_equals("t6 - isExpired() does not modify count", count, U64L(8));
-		ensure_equals("WCM t6 - isExpired() does not modify user_cpu", user_cpu, LLProcInfo::time_type(29000));
-		ensure_equals("WCM t6 - isExpired() does not modify sys_cpu", sys_cpu, LLProcInfo::time_type(57000));
+		ensure_equals("WCM t6 - isExpired() does not modify user_cpu", user_cpu, U64L(29000));
+		ensure_equals("WCM t6 - isExpired() does not modify sys_cpu", sys_cpu, U64L(57000));
 	}
 }
 
@@ -293,9 +287,8 @@ void deadmantimer_object_t::test<7>()
 	{
 		// With cpu metrics
 		F64 started(42.0), stopped(97.0);
-		U64 count(U64L(8));
+		U64 count(U64L(8)), user_cpu(29000), sys_cpu(57000);
 		LLDeadmanTimer timer(10.0, true);
-		LLProcInfo::time_type user_cpu(29000), sys_cpu(57000);
 		
 		// Would like to do subtraction on current time but can't because
 		// the implementation on Windows is zero-based.  We wrap around
@@ -343,9 +336,8 @@ void deadmantimer_object_t::test<8>()
 	{
 		// With cpu metrics
 		F64 started(42.0), stopped(97.0);
-		U64 count(U64L(8));
+		U64 count(U64L(8)), user_cpu(29000), sys_cpu(57000);
 		LLDeadmanTimer timer(10.0, true);
-		LLProcInfo::time_type user_cpu(29000), sys_cpu(57000);
 
 		// Would like to do subtraction on current time but can't because
 		// the implementation on Windows is zero-based.  We wrap around
@@ -367,8 +359,8 @@ void deadmantimer_object_t::test<8>()
 		ensure_approximately_equals("WCM t8 - 2nd isExpired() does not modify started", started, F64(42.0), 2);
 		ensure_approximately_equals("WCM t8 - 2nd isExpired() does not modify stopped", stopped, F64(97.0), 2);
 		ensure_equals("WCM t8 - 2nd isExpired() does not modify count", count, U64L(8));
-		ensure_equals("WCM t8 - 2nd isExpired() does not modify user_cpu", user_cpu, LLProcInfo::time_type(29000));
-		ensure_equals("WCM t8 - 2nd isExpired() does not modify sys_cpu", sys_cpu, LLProcInfo::time_type(57000));
+		ensure_equals("WCM t8 - 2nd isExpired() does not modify user_cpu", user_cpu, U64L(29000));
+		ensure_equals("WCM t8 - 2nd isExpired() does not modify sys_cpu", sys_cpu, U64L(57000));
 	}
 }
 
@@ -423,9 +415,8 @@ void deadmantimer_object_t::test<9>()
 	{
 		// With cpu metrics
 		F64 started(42.0), stopped(97.0);
-		U64 count(U64L(8));
+		U64 count(U64L(8)), user_cpu(29000), sys_cpu(57000);
 		LLDeadmanTimer timer(5.0, true);
-		LLProcInfo::time_type user_cpu(29000), sys_cpu(57000);
 
 		LLDeadmanTimer::time_type now(LLDeadmanTimer::getNow());
 		F64 real_start(u64_time_to_float(now));
@@ -553,9 +544,9 @@ void deadmantimer_object_t::test<10>()
 	{
 		// With cpu metrics
 		F64 started(42.0), stopped(97.0);
-		U64 count(U64L(8));
+		U64 count(U64L(8)), user_cpu(29000), sys_cpu(57000);
+
 		LLDeadmanTimer timer(5.0, true);
-		LLProcInfo::time_type user_cpu(29000), sys_cpu(57000);
 
 		LLDeadmanTimer::time_type now(LLDeadmanTimer::getNow());
 		F64 real_start(u64_time_to_float(now));
diff --git a/indra/newview/llmeshrepository.cpp b/indra/newview/llmeshrepository.cpp
index 2a863a3103e08d59a62749706618fed6c8a3e8fe..4d3937ded18f1a35211b8c058f19b6bc52a92bd4 100755
--- a/indra/newview/llmeshrepository.cpp
+++ b/indra/newview/llmeshrepository.cpp
@@ -96,7 +96,7 @@ U32 LLMeshRepository::sLODPending = 0;
 U32 LLMeshRepository::sCacheBytesRead = 0;
 U32 LLMeshRepository::sCacheBytesWritten = 0;
 U32 LLMeshRepository::sPeakKbps = 0;
-LLDeadmanTimer LLMeshRepository::sQuiescentTimer(15.0, true);
+LLDeadmanTimer LLMeshRepository::sQuiescentTimer(15.0, true);	// true -> gather cpu metrics
 
 	
 const U32 MAX_TEXTURE_UPLOAD_RETRIES = 5;
@@ -3769,9 +3769,9 @@ void LLMeshRepository::metricsProgress(unsigned int this_count)
 void LLMeshRepository::metricsUpdate()
 {
 	F64 started, stopped;
-	U64 total_count;
-
-	if (sQuiescentTimer.isExpired(0, started, stopped, total_count))
+	U64 total_count(U64L(0)), user_cpu(U64L(0)), sys_cpu(U64L(0));
+	
+	if (sQuiescentTimer.isExpired(0, started, stopped, total_count, user_cpu, sys_cpu))
 	{
 		LLSD metrics;
 
@@ -3781,6 +3781,8 @@ void LLMeshRepository::metricsUpdate()
 		metrics["stop"] = stopped;
 		metrics["downloads"] = LLSD::Integer(total_count);
 		metrics["teleports"] = LLSD::Integer(metrics_teleport_start_count);
+		metrics["user_cpu"] = double(user_cpu) / 1.0e6;
+		metrics["sys_cpu"] = double(sys_cpu) / 1.0e6;
 		llinfos << "EventMarker " << metrics << llendl;
 	}
 }