Index: base/process/process_metrics_win.cc |
diff --git a/base/process/process_metrics_win.cc b/base/process/process_metrics_win.cc |
index 0dd19cbbf31350c4870b3cf1bcebe4d1bca35413..3a66538eabfb906e69f1fe16efbb5ec12e3dab7e 100644 |
--- a/base/process/process_metrics_win.cc |
+++ b/base/process/process_metrics_win.cc |
@@ -195,14 +195,11 @@ static uint64 FileTimeToUTC(const FILETIME& ftime) { |
} |
double ProcessMetrics::GetCPUUsage() { |
- FILETIME now; |
FILETIME creation_time; |
FILETIME exit_time; |
FILETIME kernel_time; |
FILETIME user_time; |
- GetSystemTimeAsFileTime(&now); |
- |
if (!GetProcessTimes(process_, &creation_time, &exit_time, |
&kernel_time, &user_time)) { |
// We don't assert here because in some cases (such as in the Task Manager) |
@@ -212,17 +209,18 @@ double ProcessMetrics::GetCPUUsage() { |
} |
int64 system_time = (FileTimeToUTC(kernel_time) + FileTimeToUTC(user_time)) / |
processor_count_; |
- int64 time = FileTimeToUTC(now); |
+ TimeTicks time = TimeTicks::Now(); |
- if ((last_system_time_ == 0) || (last_cpu_time_ == 0)) { |
+ if (last_system_time_ == 0) { |
// First call, just set the last values. |
last_system_time_ = system_time; |
- last_cpu_time_ = time; |
+ last_cpu_walltime_ = time; |
return 0; |
} |
int64 system_time_delta = system_time - last_system_time_; |
- int64 time_delta = time - last_cpu_time_; |
+ // FILETIME is in 100-nanosecond units, so this needs microseconds times 10. |
+ int64 time_delta = (time - last_cpu_walltime_).InMicroseconds() * 10; |
DCHECK_NE(0U, time_delta); |
if (time_delta == 0) |
return 0; |
@@ -232,7 +230,7 @@ double ProcessMetrics::GetCPUUsage() { |
time_delta); |
last_system_time_ = system_time; |
- last_cpu_time_ = time; |
+ last_cpu_walltime_ = time; |
return cpu; |
} |
@@ -269,7 +267,6 @@ bool ProcessMetrics::GetIOCounters(IoCounters* io_counters) const { |
ProcessMetrics::ProcessMetrics(ProcessHandle process) |
: process_(process), |
processor_count_(base::SysInfo::NumberOfProcessors()), |
- last_cpu_time_(0), |
last_system_time_(0) { |
} |