Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(191)

Side by Side Diff: base/process/process_metrics_linux.cc

Issue 139103007: Use TimeTicks instead of gettimeofday in ProcessMetrics. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: reverty Created 6 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « base/process/process_metrics_freebsd.cc ('k') | base/process/process_metrics_mac.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/process/process_metrics.h" 5 #include "base/process/process_metrics.h"
6 6
7 #include <dirent.h> 7 #include <dirent.h>
8 #include <fcntl.h> 8 #include <fcntl.h>
9 #include <sys/stat.h> 9 #include <sys/stat.h>
10 #include <sys/time.h> 10 #include <sys/time.h>
(...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after
175 175
176 bool ProcessMetrics::GetWorkingSetKBytes(WorkingSetKBytes* ws_usage) const { 176 bool ProcessMetrics::GetWorkingSetKBytes(WorkingSetKBytes* ws_usage) const {
177 #if defined(OS_CHROMEOS) 177 #if defined(OS_CHROMEOS)
178 if (GetWorkingSetKBytesTotmaps(ws_usage)) 178 if (GetWorkingSetKBytesTotmaps(ws_usage))
179 return true; 179 return true;
180 #endif 180 #endif
181 return GetWorkingSetKBytesStatm(ws_usage); 181 return GetWorkingSetKBytesStatm(ws_usage);
182 } 182 }
183 183
184 double ProcessMetrics::GetCPUUsage() { 184 double ProcessMetrics::GetCPUUsage() {
185 struct timeval now; 185 TimeTicks time = TimeTicks::Now();
186 int retval = gettimeofday(&now, NULL);
187 if (retval)
188 return 0;
189 int64 time = TimeValToMicroseconds(now);
190 186
191 if (last_cpu_time_ == 0) { 187 if (last_cpu_ == 0) {
192 // First call, just set the last values. 188 // First call, just set the last values.
193 last_cpu_time_ = time; 189 last_cpu_time_ = time;
194 last_cpu_ = GetProcessCPU(process_); 190 last_cpu_ = GetProcessCPU(process_);
195 return 0; 191 return 0;
196 } 192 }
197 193
198 int64 time_delta = time - last_cpu_time_; 194 int64 time_delta = (time - last_cpu_time_).InMicroseconds();
199 DCHECK_NE(time_delta, 0); 195 DCHECK_NE(time_delta, 0);
200 if (time_delta == 0) 196 if (time_delta == 0)
201 return 0; 197 return 0;
202 198
203 int cpu = GetProcessCPU(process_); 199 int cpu = GetProcessCPU(process_);
204 200
205 // We have the number of jiffies in the time period. Convert to percentage. 201 // We have the number of jiffies in the time period. Convert to percentage.
206 // Note this means we will go *over* 100 in the case where multiple threads 202 // Note this means we will go *over* 100 in the case where multiple threads
207 // are together adding to more than one CPU's worth. 203 // are together adding to more than one CPU's worth.
208 TimeDelta cpu_time = internal::ClockTicksToTimeDelta(cpu); 204 TimeDelta cpu_time = internal::ClockTicksToTimeDelta(cpu);
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
256 } 252 }
257 state = KEY_NAME; 253 state = KEY_NAME;
258 break; 254 break;
259 } 255 }
260 } 256 }
261 return true; 257 return true;
262 } 258 }
263 259
264 ProcessMetrics::ProcessMetrics(ProcessHandle process) 260 ProcessMetrics::ProcessMetrics(ProcessHandle process)
265 : process_(process), 261 : process_(process),
266 last_cpu_time_(0),
267 last_system_time_(0), 262 last_system_time_(0),
268 last_cpu_(0) { 263 last_cpu_(0) {
269 processor_count_ = base::SysInfo::NumberOfProcessors(); 264 processor_count_ = base::SysInfo::NumberOfProcessors();
270 } 265 }
271 266
272 #if defined(OS_CHROMEOS) 267 #if defined(OS_CHROMEOS)
273 // Private, Shared and Proportional working set sizes are obtained from 268 // Private, Shared and Proportional working set sizes are obtained from
274 // /proc/<pid>/totmaps 269 // /proc/<pid>/totmaps
275 bool ProcessMetrics::GetWorkingSetKBytesTotmaps(WorkingSetKBytes *ws_usage) 270 bool ProcessMetrics::GetWorkingSetKBytesTotmaps(WorkingSetKBytes *ws_usage)
276 const { 271 const {
(...skipping 598 matching lines...) Expand 10 before | Expand all | Expand 10 after
875 swap_info->num_reads = ReadFileToUint64(zram_path.Append("num_reads")); 870 swap_info->num_reads = ReadFileToUint64(zram_path.Append("num_reads"));
876 swap_info->num_writes = ReadFileToUint64(zram_path.Append("num_writes")); 871 swap_info->num_writes = ReadFileToUint64(zram_path.Append("num_writes"));
877 swap_info->compr_data_size = 872 swap_info->compr_data_size =
878 ReadFileToUint64(zram_path.Append("compr_data_size")); 873 ReadFileToUint64(zram_path.Append("compr_data_size"));
879 swap_info->mem_used_total = 874 swap_info->mem_used_total =
880 ReadFileToUint64(zram_path.Append("mem_used_total")); 875 ReadFileToUint64(zram_path.Append("mem_used_total"));
881 } 876 }
882 #endif // defined(OS_CHROMEOS) 877 #endif // defined(OS_CHROMEOS)
883 878
884 } // namespace base 879 } // namespace base
OLDNEW
« no previous file with comments | « base/process/process_metrics_freebsd.cc ('k') | base/process/process_metrics_mac.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698