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

Side by Side Diff: base/process/process_metrics.h

Issue 2807463004: GN: aix port along with linux_s390x, linux_ppc64 and linux_ppc64le support. (Closed)
Patch Set: removed the changes from //base/BUILD.gn Created 3 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
« no previous file with comments | « base/process/process_linux.cc ('k') | base/process/process_metrics.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 // This file contains routines for gathering resource statistics for processes 5 // This file contains routines for gathering resource statistics for processes
6 // running on the system. 6 // running on the system.
7 7
8 #ifndef BASE_PROCESS_PROCESS_METRICS_H_ 8 #ifndef BASE_PROCESS_PROCESS_METRICS_H_
9 #define BASE_PROCESS_PROCESS_METRICS_H_ 9 #define BASE_PROCESS_PROCESS_METRICS_H_
10 10
(...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after
198 // the range of 0 to (100 * numCPUCores) everywhere. 198 // the range of 0 to (100 * numCPUCores) everywhere.
199 double GetPlatformIndependentCPUUsage(); 199 double GetPlatformIndependentCPUUsage();
200 200
201 // Retrieves accounting information for all I/O operations performed by the 201 // Retrieves accounting information for all I/O operations performed by the
202 // process. 202 // process.
203 // If IO information is retrieved successfully, the function returns true 203 // If IO information is retrieved successfully, the function returns true
204 // and fills in the IO_COUNTERS passed in. The function returns false 204 // and fills in the IO_COUNTERS passed in. The function returns false
205 // otherwise. 205 // otherwise.
206 bool GetIOCounters(IoCounters* io_counters) const; 206 bool GetIOCounters(IoCounters* io_counters) const;
207 207
208 #if defined(OS_LINUX) 208 #if defined(OS_LINUX) || defined(OS_AIX)
209 // Returns the number of file descriptors currently open by the process, or 209 // Returns the number of file descriptors currently open by the process, or
210 // -1 on error. 210 // -1 on error.
211 int GetOpenFdCount() const; 211 int GetOpenFdCount() const;
212 212
213 // Returns the soft limit of file descriptors that can be opened by the 213 // Returns the soft limit of file descriptors that can be opened by the
214 // process, or -1 on error. 214 // process, or -1 on error.
215 int GetOpenFdSoftLimit() const; 215 int GetOpenFdSoftLimit() const;
216 #endif // defined(OS_LINUX) 216 #endif // defined(OS_LINUX) || defined(OS_AIX)
217 217
218 private: 218 private:
219 #if !defined(OS_MACOSX) || defined(OS_IOS) 219 #if !defined(OS_MACOSX) || defined(OS_IOS)
220 explicit ProcessMetrics(ProcessHandle process); 220 explicit ProcessMetrics(ProcessHandle process);
221 #else 221 #else
222 ProcessMetrics(ProcessHandle process, PortProvider* port_provider); 222 ProcessMetrics(ProcessHandle process, PortProvider* port_provider);
223 #endif // !defined(OS_MACOSX) || defined(OS_IOS) 223 #endif // !defined(OS_MACOSX) || defined(OS_IOS)
224 224
225 #if defined(OS_LINUX) || defined(OS_ANDROID) 225 #if defined(OS_LINUX) || defined(OS_ANDROID) | defined(OS_AIX)
226 bool GetWorkingSetKBytesStatm(WorkingSetKBytes* ws_usage) const; 226 bool GetWorkingSetKBytesStatm(WorkingSetKBytes* ws_usage) const;
227 #endif 227 #endif
228 228
229 #if defined(OS_CHROMEOS) 229 #if defined(OS_CHROMEOS)
230 bool GetWorkingSetKBytesTotmaps(WorkingSetKBytes *ws_usage) const; 230 bool GetWorkingSetKBytesTotmaps(WorkingSetKBytes *ws_usage) const;
231 #endif 231 #endif
232 232
233 #if defined(OS_MACOSX) || defined(OS_LINUX) 233 #if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_AIX)
234 int CalculateIdleWakeupsPerSecond(uint64_t absolute_idle_wakeups); 234 int CalculateIdleWakeupsPerSecond(uint64_t absolute_idle_wakeups);
235 #endif 235 #endif
236 236
237 #if defined(OS_WIN) 237 #if defined(OS_WIN)
238 win::ScopedHandle process_; 238 win::ScopedHandle process_;
239 #else 239 #else
240 ProcessHandle process_; 240 ProcessHandle process_;
241 #endif 241 #endif
242 242
243 int processor_count_; 243 int processor_count_;
244 244
245 // Used to store the previous times and CPU usage counts so we can 245 // Used to store the previous times and CPU usage counts so we can
246 // compute the CPU usage between calls. 246 // compute the CPU usage between calls.
247 TimeTicks last_cpu_time_; 247 TimeTicks last_cpu_time_;
248 int64_t last_system_time_; 248 int64_t last_system_time_;
249 249
250 #if defined(OS_MACOSX) || defined(OS_LINUX) 250 #if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_AIX)
251 // Same thing for idle wakeups. 251 // Same thing for idle wakeups.
252 TimeTicks last_idle_wakeups_time_; 252 TimeTicks last_idle_wakeups_time_;
253 uint64_t last_absolute_idle_wakeups_; 253 uint64_t last_absolute_idle_wakeups_;
254 #endif 254 #endif
255 255
256 #if !defined(OS_IOS) 256 #if !defined(OS_IOS)
257 #if defined(OS_MACOSX) 257 #if defined(OS_MACOSX)
258 // Queries the port provider if it's set. 258 // Queries the port provider if it's set.
259 mach_port_t TaskForPid(ProcessHandle process) const; 259 mach_port_t TaskForPid(ProcessHandle process) const;
260 260
(...skipping 21 matching lines...) Expand all
282 // Returns the maximum number of file descriptors that can be open by a process 282 // Returns the maximum number of file descriptors that can be open by a process
283 // at once. If the number is unavailable, a conservative best guess is returned. 283 // at once. If the number is unavailable, a conservative best guess is returned.
284 BASE_EXPORT size_t GetMaxFds(); 284 BASE_EXPORT size_t GetMaxFds();
285 285
286 // Sets the file descriptor soft limit to |max_descriptors| or the OS hard 286 // Sets the file descriptor soft limit to |max_descriptors| or the OS hard
287 // limit, whichever is lower. 287 // limit, whichever is lower.
288 BASE_EXPORT void SetFdLimit(unsigned int max_descriptors); 288 BASE_EXPORT void SetFdLimit(unsigned int max_descriptors);
289 #endif // defined(OS_POSIX) 289 #endif // defined(OS_POSIX)
290 290
291 #if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || \ 291 #if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || \
292 defined(OS_ANDROID) 292 defined(OS_ANDROID) || defined(OS_AIX)
293 // Data about system-wide memory consumption. Values are in KB. Available on 293 // Data about system-wide memory consumption. Values are in KB. Available on
294 // Windows, Mac, Linux, Android and Chrome OS. 294 // Windows, Mac, Linux, Android and Chrome OS.
295 // 295 //
296 // Total memory are available on all platforms that implement 296 // Total memory are available on all platforms that implement
297 // GetSystemMemoryInfo(). Total/free swap memory are available on all platforms 297 // GetSystemMemoryInfo(). Total/free swap memory are available on all platforms
298 // except on Mac. Buffers/cached/active_anon/inactive_anon/active_file/ 298 // except on Mac. Buffers/cached/active_anon/inactive_anon/active_file/
299 // inactive_file/dirty/reclaimable/pswpin/pswpout/pgmajfault are available on 299 // inactive_file/dirty/reclaimable/pswpin/pswpout/pgmajfault are available on
300 // Linux/Android/Chrome OS. Shmem/slab/gem_objects/gem_size are Chrome OS only. 300 // Linux/Android/Chrome OS. Shmem/slab/gem_objects/gem_size are Chrome OS only.
301 // Speculative/file_backed/purgeable are Mac and iOS only. 301 // Speculative/file_backed/purgeable are Mac and iOS only.
302 // Free is absent on Windows (see "avail_phys" below). 302 // Free is absent on Windows (see "avail_phys" below).
(...skipping 12 matching lines...) Expand all
315 315
316 #if defined(OS_WIN) 316 #if defined(OS_WIN)
317 // "This is the amount of physical memory that can be immediately reused 317 // "This is the amount of physical memory that can be immediately reused
318 // without having to write its contents to disk first. It is the sum of the 318 // without having to write its contents to disk first. It is the sum of the
319 // size of the standby, free, and zero lists." (MSDN). 319 // size of the standby, free, and zero lists." (MSDN).
320 // Standby: not modified pages of physical ram (file-backed memory) that are 320 // Standby: not modified pages of physical ram (file-backed memory) that are
321 // not actively being used. 321 // not actively being used.
322 int avail_phys = 0; 322 int avail_phys = 0;
323 #endif 323 #endif
324 324
325 #if defined(OS_LINUX) || defined(OS_ANDROID) 325 #if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_AIX)
326 // This provides an estimate of available memory as described here: 326 // This provides an estimate of available memory as described here:
327 // https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id= 34e431b0ae398fc54ea69ff85ec700722c9da773 327 // https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id= 34e431b0ae398fc54ea69ff85ec700722c9da773
328 // NOTE: this is ONLY valid in kernels 3.14 and up. Its value will always 328 // NOTE: this is ONLY valid in kernels 3.14 and up. Its value will always
329 // be 0 in earlier kernel versions. 329 // be 0 in earlier kernel versions.
330 // Note: it includes _all_ file-backed memory (active + inactive). 330 // Note: it includes _all_ file-backed memory (active + inactive).
331 int available = 0; 331 int available = 0;
332 #endif 332 #endif
333 333
334 #if !defined(OS_MACOSX) 334 #if !defined(OS_MACOSX)
335 int swap_total = 0; 335 int swap_total = 0;
336 int swap_free = 0; 336 int swap_free = 0;
337 #endif 337 #endif
338 338
339 #if defined(OS_ANDROID) || defined(OS_LINUX) 339 #if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_AIX)
340 int buffers = 0; 340 int buffers = 0;
341 int cached = 0; 341 int cached = 0;
342 int active_anon = 0; 342 int active_anon = 0;
343 int inactive_anon = 0; 343 int inactive_anon = 0;
344 int active_file = 0; 344 int active_file = 0;
345 int inactive_file = 0; 345 int inactive_file = 0;
346 int dirty = 0; 346 int dirty = 0;
347 int reclaimable = 0; 347 int reclaimable = 0;
348 348
349 // vmstats data. 349 // vmstats data.
350 unsigned long pswpin = 0; 350 unsigned long pswpin = 0;
351 unsigned long pswpout = 0; 351 unsigned long pswpout = 0;
352 unsigned long pgmajfault = 0; 352 unsigned long pgmajfault = 0;
353 #endif // defined(OS_ANDROID) || defined(OS_LINUX) 353 #endif // defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_AIX)
354 354
355 #if defined(OS_CHROMEOS) 355 #if defined(OS_CHROMEOS)
356 int shmem = 0; 356 int shmem = 0;
357 int slab = 0; 357 int slab = 0;
358 // Gem data will be -1 if not supported. 358 // Gem data will be -1 if not supported.
359 int gem_objects = -1; 359 int gem_objects = -1;
360 long long gem_size = -1; 360 long long gem_size = -1;
361 #endif // defined(OS_CHROMEOS) 361 #endif // defined(OS_CHROMEOS)
362 362
363 #if defined(OS_MACOSX) 363 #if defined(OS_MACOSX)
364 int speculative = 0; 364 int speculative = 0;
365 int file_backed = 0; 365 int file_backed = 0;
366 int purgeable = 0; 366 int purgeable = 0;
367 #endif // defined(OS_MACOSX) 367 #endif // defined(OS_MACOSX)
368 }; 368 };
369 369
370 // On Linux/Android/Chrome OS, system-wide memory consumption data is parsed 370 // On Linux/Android/Chrome OS, system-wide memory consumption data is parsed
371 // from /proc/meminfo and /proc/vmstat. On Windows/Mac, it is obtained using 371 // from /proc/meminfo and /proc/vmstat. On Windows/Mac, it is obtained using
372 // system API calls. 372 // system API calls.
373 // 373 //
374 // Fills in the provided |meminfo| structure. Returns true on success. 374 // Fills in the provided |meminfo| structure. Returns true on success.
375 // Exposed for memory debugging widget. 375 // Exposed for memory debugging widget.
376 BASE_EXPORT bool GetSystemMemoryInfo(SystemMemoryInfoKB* meminfo); 376 BASE_EXPORT bool GetSystemMemoryInfo(SystemMemoryInfoKB* meminfo);
377 377
378 #endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || 378 #endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) ||
379 // defined(OS_ANDROID) 379 // defined(OS_ANDROID)
380 380
381 #if defined(OS_LINUX) || defined(OS_ANDROID) 381 #if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_AIX)
382 // Parse the data found in /proc/<pid>/stat and return the sum of the 382 // Parse the data found in /proc/<pid>/stat and return the sum of the
383 // CPU-related ticks. Returns -1 on parse error. 383 // CPU-related ticks. Returns -1 on parse error.
384 // Exposed for testing. 384 // Exposed for testing.
385 BASE_EXPORT int ParseProcStatCPU(const std::string& input); 385 BASE_EXPORT int ParseProcStatCPU(const std::string& input);
386 386
387 // Get the number of threads of |process| as available in /proc/<pid>/stat. 387 // Get the number of threads of |process| as available in /proc/<pid>/stat.
388 // This should be used with care as no synchronization with running threads is 388 // This should be used with care as no synchronization with running threads is
389 // done. This is mostly useful to guarantee being single-threaded. 389 // done. This is mostly useful to guarantee being single-threaded.
390 // Returns 0 on failure. 390 // Returns 0 on failure.
391 BASE_EXPORT int GetNumberOfThreads(ProcessHandle process); 391 BASE_EXPORT int GetNumberOfThreads(ProcessHandle process);
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after
520 // |size| and |info| are output parameters, only valid on Success. 520 // |size| and |info| are output parameters, only valid on Success.
521 BASE_EXPORT MachVMRegionResult GetBasicInfo(mach_port_t task, 521 BASE_EXPORT MachVMRegionResult GetBasicInfo(mach_port_t task,
522 mach_vm_size_t* size, 522 mach_vm_size_t* size,
523 mach_vm_address_t* address, 523 mach_vm_address_t* address,
524 vm_region_basic_info_64* info); 524 vm_region_basic_info_64* info);
525 #endif // defined(OS_MACOSX) && !defined(OS_IOS) 525 #endif // defined(OS_MACOSX) && !defined(OS_IOS)
526 526
527 } // namespace base 527 } // namespace base
528 528
529 #endif // BASE_PROCESS_PROCESS_METRICS_H_ 529 #endif // BASE_PROCESS_PROCESS_METRICS_H_
OLDNEW
« no previous file with comments | « base/process/process_linux.cc ('k') | base/process/process_metrics.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698