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

Side by Side Diff: base/process/process_metrics_openbsd.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_mac.cc ('k') | base/process/process_metrics_win.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 <sys/param.h> 7 #include <sys/param.h>
8 #include <sys/sysctl.h> 8 #include <sys/sysctl.h>
9 9
10 namespace base { 10 namespace base {
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
99 99
100 mib[5] = (length / sizeof(struct kinfo_proc)); 100 mib[5] = (length / sizeof(struct kinfo_proc));
101 101
102 if (sysctl(mib, arraysize(mib), &info, &length, NULL, 0) < 0) 102 if (sysctl(mib, arraysize(mib), &info, &length, NULL, 0) < 0)
103 return 0; 103 return 0;
104 104
105 return info.p_pctcpu; 105 return info.p_pctcpu;
106 } 106 }
107 107
108 double ProcessMetrics::GetCPUUsage() { 108 double ProcessMetrics::GetCPUUsage() {
109 struct timeval now; 109 TimeTicks time = TimeTicks::Now();
110 110
111 int retval = gettimeofday(&now, NULL); 111 if (last_cpu_ == 0) {
112 if (retval)
113 return 0;
114
115 int64 time = TimeValToMicroseconds(now);
116
117 if (last_cpu_time_ == 0) {
118 // First call, just set the last values. 112 // First call, just set the last values.
119 last_cpu_time_ = time; 113 last_cpu_time_ = time;
120 last_cpu_ = GetProcessCPU(process_); 114 last_cpu_ = GetProcessCPU(process_);
121 return 0; 115 return 0;
122 } 116 }
123 117
124 int64 time_delta = time - last_cpu_time_; 118 int64 time_delta = (time - last_cpu_time_).InMicroseconds();
125 DCHECK_NE(time_delta, 0); 119 DCHECK_NE(time_delta, 0);
126 120
127 if (time_delta == 0) 121 if (time_delta == 0)
128 return 0; 122 return 0;
129 123
130 int cpu = GetProcessCPU(process_); 124 int cpu = GetProcessCPU(process_);
131 125
132 last_cpu_time_ = time; 126 last_cpu_time_ = time;
133 last_cpu_ = cpu; 127 last_cpu_ = cpu;
134 128
135 double percentage = static_cast<double>((cpu * 100.0) / FSCALE); 129 double percentage = static_cast<double>((cpu * 100.0) / FSCALE);
136 130
137 return percentage; 131 return percentage;
138 } 132 }
139 133
140 ProcessMetrics::ProcessMetrics(ProcessHandle process) 134 ProcessMetrics::ProcessMetrics(ProcessHandle process)
141 : process_(process), 135 : process_(process),
142 last_cpu_time_(0),
143 last_system_time_(0), 136 last_system_time_(0),
144 last_cpu_(0) { 137 last_cpu_(0) {
145 138
146 processor_count_ = base::SysInfo::NumberOfProcessors(); 139 processor_count_ = base::SysInfo::NumberOfProcessors();
147 } 140 }
148 141
149 size_t GetSystemCommitCharge() { 142 size_t GetSystemCommitCharge() {
150 int mib[] = { CTL_VM, VM_METER }; 143 int mib[] = { CTL_VM, VM_METER };
151 int pagesize; 144 int pagesize;
152 struct vmtotal vmtotal; 145 struct vmtotal vmtotal;
153 unsigned long mem_total, mem_free, mem_inactive; 146 unsigned long mem_total, mem_free, mem_inactive;
154 size_t len = sizeof(vmtotal); 147 size_t len = sizeof(vmtotal);
155 148
156 if (sysctl(mib, arraysize(mib), &vmtotal, &len, NULL, 0) < 0) 149 if (sysctl(mib, arraysize(mib), &vmtotal, &len, NULL, 0) < 0)
157 return 0; 150 return 0;
158 151
159 mem_total = vmtotal.t_vm; 152 mem_total = vmtotal.t_vm;
160 mem_free = vmtotal.t_free; 153 mem_free = vmtotal.t_free;
161 mem_inactive = vmtotal.t_vm - vmtotal.t_avm; 154 mem_inactive = vmtotal.t_vm - vmtotal.t_avm;
162 155
163 pagesize = getpagesize(); 156 pagesize = getpagesize();
164 157
165 return mem_total - (mem_free*pagesize) - (mem_inactive*pagesize); 158 return mem_total - (mem_free*pagesize) - (mem_inactive*pagesize);
166 } 159 }
167 160
168 } // namespace base 161 } // namespace base
OLDNEW
« no previous file with comments | « base/process/process_metrics_mac.cc ('k') | base/process/process_metrics_win.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698