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

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: 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
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 177 matching lines...) Expand 10 before | Expand all | Expand 10 after
188 // the range of 0 to (100 * numCPUCores) everywhere. 188 // the range of 0 to (100 * numCPUCores) everywhere.
189 double GetPlatformIndependentCPUUsage(); 189 double GetPlatformIndependentCPUUsage();
190 190
191 // Retrieves accounting information for all I/O operations performed by the 191 // Retrieves accounting information for all I/O operations performed by the
192 // process. 192 // process.
193 // If IO information is retrieved successfully, the function returns true 193 // If IO information is retrieved successfully, the function returns true
194 // and fills in the IO_COUNTERS passed in. The function returns false 194 // and fills in the IO_COUNTERS passed in. The function returns false
195 // otherwise. 195 // otherwise.
196 bool GetIOCounters(IoCounters* io_counters) const; 196 bool GetIOCounters(IoCounters* io_counters) const;
197 197
198 #if defined(OS_LINUX) 198 #if defined(OS_LINUX) || defined(OS_AIX)
199 // Returns the number of file descriptors currently open by the process, or 199 // Returns the number of file descriptors currently open by the process, or
200 // -1 on error. 200 // -1 on error.
201 int GetOpenFdCount() const; 201 int GetOpenFdCount() const;
202 202
203 // Returns the soft limit of file descriptors that can be opened by the 203 // Returns the soft limit of file descriptors that can be opened by the
204 // process, or -1 on error. 204 // process, or -1 on error.
205 int GetOpenFdSoftLimit() const; 205 int GetOpenFdSoftLimit() const;
206 #endif // defined(OS_LINUX) 206 #endif // defined(OS_LINUX) || defined(OS_AIX)
207 207
208 private: 208 private:
209 #if !defined(OS_MACOSX) || defined(OS_IOS) 209 #if !defined(OS_MACOSX) || defined(OS_IOS)
210 explicit ProcessMetrics(ProcessHandle process); 210 explicit ProcessMetrics(ProcessHandle process);
211 #else 211 #else
212 ProcessMetrics(ProcessHandle process, PortProvider* port_provider); 212 ProcessMetrics(ProcessHandle process, PortProvider* port_provider);
213 #endif // !defined(OS_MACOSX) || defined(OS_IOS) 213 #endif // !defined(OS_MACOSX) || defined(OS_IOS)
214 214
215 #if defined(OS_LINUX) || defined(OS_ANDROID) 215 #if defined(OS_LINUX) || defined(OS_ANDROID) | defined(OS_AIX)
216 bool GetWorkingSetKBytesStatm(WorkingSetKBytes* ws_usage) const; 216 bool GetWorkingSetKBytesStatm(WorkingSetKBytes* ws_usage) const;
217 #endif 217 #endif
218 218
219 #if defined(OS_CHROMEOS) 219 #if defined(OS_CHROMEOS)
220 bool GetWorkingSetKBytesTotmaps(WorkingSetKBytes *ws_usage) const; 220 bool GetWorkingSetKBytesTotmaps(WorkingSetKBytes *ws_usage) const;
221 #endif 221 #endif
222 222
223 #if defined(OS_MACOSX) || defined(OS_LINUX) 223 #if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_AIX)
224 int CalculateIdleWakeupsPerSecond(uint64_t absolute_idle_wakeups); 224 int CalculateIdleWakeupsPerSecond(uint64_t absolute_idle_wakeups);
225 #endif 225 #endif
226 226
227 #if defined(OS_WIN) 227 #if defined(OS_WIN)
228 win::ScopedHandle process_; 228 win::ScopedHandle process_;
229 #else 229 #else
230 ProcessHandle process_; 230 ProcessHandle process_;
231 #endif 231 #endif
232 232
233 int processor_count_; 233 int processor_count_;
234 234
235 // Used to store the previous times and CPU usage counts so we can 235 // Used to store the previous times and CPU usage counts so we can
236 // compute the CPU usage between calls. 236 // compute the CPU usage between calls.
237 TimeTicks last_cpu_time_; 237 TimeTicks last_cpu_time_;
238 int64_t last_system_time_; 238 int64_t last_system_time_;
239 239
240 #if defined(OS_MACOSX) || defined(OS_LINUX) 240 #if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_AIX)
241 // Same thing for idle wakeups. 241 // Same thing for idle wakeups.
242 TimeTicks last_idle_wakeups_time_; 242 TimeTicks last_idle_wakeups_time_;
243 uint64_t last_absolute_idle_wakeups_; 243 uint64_t last_absolute_idle_wakeups_;
244 #endif 244 #endif
245 245
246 #if !defined(OS_IOS) 246 #if !defined(OS_IOS)
247 #if defined(OS_MACOSX) 247 #if defined(OS_MACOSX)
248 // Queries the port provider if it's set. 248 // Queries the port provider if it's set.
249 mach_port_t TaskForPid(ProcessHandle process) const; 249 mach_port_t TaskForPid(ProcessHandle process) const;
250 250
(...skipping 21 matching lines...) Expand all
272 // Returns the maximum number of file descriptors that can be open by a process 272 // Returns the maximum number of file descriptors that can be open by a process
273 // at once. If the number is unavailable, a conservative best guess is returned. 273 // at once. If the number is unavailable, a conservative best guess is returned.
274 BASE_EXPORT size_t GetMaxFds(); 274 BASE_EXPORT size_t GetMaxFds();
275 275
276 // Sets the file descriptor soft limit to |max_descriptors| or the OS hard 276 // Sets the file descriptor soft limit to |max_descriptors| or the OS hard
277 // limit, whichever is lower. 277 // limit, whichever is lower.
278 BASE_EXPORT void SetFdLimit(unsigned int max_descriptors); 278 BASE_EXPORT void SetFdLimit(unsigned int max_descriptors);
279 #endif // defined(OS_POSIX) 279 #endif // defined(OS_POSIX)
280 280
281 #if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || \ 281 #if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || \
282 defined(OS_ANDROID) 282 defined(OS_ANDROID) || defined(OS_AIX)
283 // Data about system-wide memory consumption. Values are in KB. Available on 283 // Data about system-wide memory consumption. Values are in KB. Available on
284 // Windows, Mac, Linux, Android and Chrome OS. 284 // Windows, Mac, Linux, Android and Chrome OS.
285 // 285 //
286 // Total memory are available on all platforms that implement 286 // Total memory are available on all platforms that implement
287 // GetSystemMemoryInfo(). Total/free swap memory are available on all platforms 287 // GetSystemMemoryInfo(). Total/free swap memory are available on all platforms
288 // except on Mac. Buffers/cached/active_anon/inactive_anon/active_file/ 288 // except on Mac. Buffers/cached/active_anon/inactive_anon/active_file/
289 // inactive_file/dirty/reclaimable/pswpin/pswpout/pgmajfault are available on 289 // inactive_file/dirty/reclaimable/pswpin/pswpout/pgmajfault are available on
290 // Linux/Android/Chrome OS. Shmem/slab/gem_objects/gem_size are Chrome OS only. 290 // Linux/Android/Chrome OS. Shmem/slab/gem_objects/gem_size are Chrome OS only.
291 // Speculative/file_backed/purgeable are Mac and iOS only. 291 // Speculative/file_backed/purgeable are Mac and iOS only.
292 // Free is absent on Windows (see "avail_phys" below). 292 // Free is absent on Windows (see "avail_phys" below).
(...skipping 12 matching lines...) Expand all
305 305
306 #if defined(OS_WIN) 306 #if defined(OS_WIN)
307 // "This is the amount of physical memory that can be immediately reused 307 // "This is the amount of physical memory that can be immediately reused
308 // without having to write its contents to disk first. It is the sum of the 308 // without having to write its contents to disk first. It is the sum of the
309 // size of the standby, free, and zero lists." (MSDN). 309 // size of the standby, free, and zero lists." (MSDN).
310 // Standby: not modified pages of physical ram (file-backed memory) that are 310 // Standby: not modified pages of physical ram (file-backed memory) that are
311 // not actively being used. 311 // not actively being used.
312 int avail_phys = 0; 312 int avail_phys = 0;
313 #endif 313 #endif
314 314
315 #if defined(OS_LINUX) || defined(OS_ANDROID) 315 #if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_AIX)
316 // This provides an estimate of available memory as described here: 316 // This provides an estimate of available memory as described here:
317 // https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id= 34e431b0ae398fc54ea69ff85ec700722c9da773 317 // https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id= 34e431b0ae398fc54ea69ff85ec700722c9da773
318 // NOTE: this is ONLY valid in kernels 3.14 and up. Its value will always 318 // NOTE: this is ONLY valid in kernels 3.14 and up. Its value will always
319 // be 0 in earlier kernel versions. 319 // be 0 in earlier kernel versions.
320 // Note: it includes _all_ file-backed memory (active + inactive). 320 // Note: it includes _all_ file-backed memory (active + inactive).
321 int available = 0; 321 int available = 0;
322 #endif 322 #endif
323 323
324 #if !defined(OS_MACOSX) 324 #if !defined(OS_MACOSX)
325 int swap_total = 0; 325 int swap_total = 0;
326 int swap_free = 0; 326 int swap_free = 0;
327 #endif 327 #endif
328 328
329 #if defined(OS_ANDROID) || defined(OS_LINUX) 329 #if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_AIX)
330 int buffers = 0; 330 int buffers = 0;
331 int cached = 0; 331 int cached = 0;
332 int active_anon = 0; 332 int active_anon = 0;
333 int inactive_anon = 0; 333 int inactive_anon = 0;
334 int active_file = 0; 334 int active_file = 0;
335 int inactive_file = 0; 335 int inactive_file = 0;
336 int dirty = 0; 336 int dirty = 0;
337 int reclaimable = 0; 337 int reclaimable = 0;
338 338
339 // vmstats data. 339 // vmstats data.
340 unsigned long pswpin = 0; 340 unsigned long pswpin = 0;
341 unsigned long pswpout = 0; 341 unsigned long pswpout = 0;
342 unsigned long pgmajfault = 0; 342 unsigned long pgmajfault = 0;
343 #endif // defined(OS_ANDROID) || defined(OS_LINUX) 343 #endif // defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_AIX)
344 344
345 #if defined(OS_CHROMEOS) 345 #if defined(OS_CHROMEOS)
346 int shmem = 0; 346 int shmem = 0;
347 int slab = 0; 347 int slab = 0;
348 // Gem data will be -1 if not supported. 348 // Gem data will be -1 if not supported.
349 int gem_objects = -1; 349 int gem_objects = -1;
350 long long gem_size = -1; 350 long long gem_size = -1;
351 #endif // defined(OS_CHROMEOS) 351 #endif // defined(OS_CHROMEOS)
352 352
353 #if defined(OS_MACOSX) 353 #if defined(OS_MACOSX)
354 int speculative = 0; 354 int speculative = 0;
355 int file_backed = 0; 355 int file_backed = 0;
356 int purgeable = 0; 356 int purgeable = 0;
357 #endif // defined(OS_MACOSX) 357 #endif // defined(OS_MACOSX)
358 }; 358 };
359 359
360 // On Linux/Android/Chrome OS, system-wide memory consumption data is parsed 360 // On Linux/Android/Chrome OS, system-wide memory consumption data is parsed
361 // from /proc/meminfo and /proc/vmstat. On Windows/Mac, it is obtained using 361 // from /proc/meminfo and /proc/vmstat. On Windows/Mac, it is obtained using
362 // system API calls. 362 // system API calls.
363 // 363 //
364 // Fills in the provided |meminfo| structure. Returns true on success. 364 // Fills in the provided |meminfo| structure. Returns true on success.
365 // Exposed for memory debugging widget. 365 // Exposed for memory debugging widget.
366 BASE_EXPORT bool GetSystemMemoryInfo(SystemMemoryInfoKB* meminfo); 366 BASE_EXPORT bool GetSystemMemoryInfo(SystemMemoryInfoKB* meminfo);
367 367
368 #endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || 368 #endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) ||
369 // defined(OS_ANDROID) 369 // defined(OS_ANDROID)
370 370
371 #if defined(OS_LINUX) || defined(OS_ANDROID) 371 #if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_AIX)
372 // Parse the data found in /proc/<pid>/stat and return the sum of the 372 // Parse the data found in /proc/<pid>/stat and return the sum of the
373 // CPU-related ticks. Returns -1 on parse error. 373 // CPU-related ticks. Returns -1 on parse error.
374 // Exposed for testing. 374 // Exposed for testing.
375 BASE_EXPORT int ParseProcStatCPU(const std::string& input); 375 BASE_EXPORT int ParseProcStatCPU(const std::string& input);
376 376
377 // Get the number of threads of |process| as available in /proc/<pid>/stat. 377 // Get the number of threads of |process| as available in /proc/<pid>/stat.
378 // This should be used with care as no synchronization with running threads is 378 // This should be used with care as no synchronization with running threads is
379 // done. This is mostly useful to guarantee being single-threaded. 379 // done. This is mostly useful to guarantee being single-threaded.
380 // Returns 0 on failure. 380 // Returns 0 on failure.
381 BASE_EXPORT int GetNumberOfThreads(ProcessHandle process); 381 BASE_EXPORT int GetNumberOfThreads(ProcessHandle process);
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
474 SystemDiskInfo disk_info_; 474 SystemDiskInfo disk_info_;
475 #endif 475 #endif
476 #if defined(OS_CHROMEOS) 476 #if defined(OS_CHROMEOS)
477 SwapInfo swap_info_; 477 SwapInfo swap_info_;
478 #endif 478 #endif
479 }; 479 };
480 480
481 } // namespace base 481 } // namespace base
482 482
483 #endif // BASE_PROCESS_PROCESS_METRICS_H_ 483 #endif // BASE_PROCESS_PROCESS_METRICS_H_
OLDNEW
« no previous file with comments | « base/process/process_linux.cc ('k') | base/process/process_metrics.cc » ('j') | tools/gn/args.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698