Index: chrome/browser/performance_monitor/performance_monitor.h |
diff --git a/chrome/browser/performance_monitor/performance_monitor.h b/chrome/browser/performance_monitor/performance_monitor.h |
index c74ee7ae6921319716efbbd2e195f44cbdfcee94..b0875669102ed7b08c4961d1deedbb4280649486 100644 |
--- a/chrome/browser/performance_monitor/performance_monitor.h |
+++ b/chrome/browser/performance_monitor/performance_monitor.h |
@@ -5,12 +5,16 @@ |
#ifndef CHROME_BROWSER_PERFORMANCE_MONITOR_PERFORMANCE_MONITOR_H_ |
#define CHROME_BROWSER_PERFORMANCE_MONITOR_PERFORMANCE_MONITOR_H_ |
+#include <map> |
#include <string> |
#include "base/callback.h" |
#include "base/file_path.h" |
+#include "base/memory/linked_ptr.h" |
#include "base/memory/scoped_ptr.h" |
#include "base/memory/singleton.h" |
+#include "base/process.h" |
+#include "base/process_util.h" |
#include "base/timer.h" |
#include "chrome/browser/performance_monitor/database.h" |
#include "chrome/browser/performance_monitor/event.h" |
@@ -26,6 +30,9 @@ class PerformanceMonitor : public content::NotificationObserver { |
public: |
typedef base::Callback<void(const std::string&)> StateValueCallback; |
+ typedef std::map<base::ProcessHandle, |
+ linked_ptr<base::ProcessMetrics> > MetricsMap; |
+ |
// Set the path which the PerformanceMonitor should use for the database files |
// constructed. This must be done prior to the initialization of the |
// PerformanceMonitor. Returns true on success, false on failure (failure |
@@ -41,6 +48,9 @@ class PerformanceMonitor : public content::NotificationObserver { |
// start collecting data. |
void Start(); |
+ // Gathers CPU usage and memory usage of all Chrome processes. |
+ void GatherStatisticsOnBackgroundThread(); |
+ |
// content::NotificationObserver |
// Wait for various notifications; insert events into the database upon |
// occurance. |
@@ -89,6 +99,16 @@ class PerformanceMonitor : public content::NotificationObserver { |
void AddEventOnBackgroundThread(scoped_ptr<Event> event); |
+ // Gathers the CPU usage of every Chrome process that has been running since |
+ // the last call to GatherStatistics(). |
+ void GatherCPUUsageOnBackgroundThread(); |
+ |
+ // Gathers the memory usage of every process in the current list of processes. |
+ void GatherMemoryUsageOnBackgroundThread(); |
+ |
+ // Updates the ProcessMetrics map with the current list of processes. |
+ void UpdateMetricsMapOnBackgroundThread(); |
+ |
// Gets the corresponding value of |key| from the database, and then runs |
// |callback| on the UI thread with that value as a parameter. |
void GetStateValueOnBackgroundThread( |
@@ -113,6 +133,9 @@ class PerformanceMonitor : public content::NotificationObserver { |
scoped_ptr<Database> database_; |
+ // A map of currently running ProcessHandles to ProcessMetrics. |
+ MetricsMap metrics_map_; |
+ |
// The timer to signal PerformanceMonitor to perform its timed collections. |
base::RepeatingTimer<PerformanceMonitor> timer_; |