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

Side by Side Diff: chrome/browser/chromeos/power/cpu_data_collector.h

Issue 2853863002: Add parser for new cpu freq file (Closed)
Patch Set: Turn sampling period back to 30 (3 is used in test) Created 3 years, 7 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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 #ifndef CHROME_BROWSER_CHROMEOS_POWER_CPU_DATA_COLLECTOR_H_ 5 #ifndef CHROME_BROWSER_CHROMEOS_POWER_CPU_DATA_COLLECTOR_H_
6 #define CHROME_BROWSER_CHROMEOS_POWER_CPU_DATA_COLLECTOR_H_ 6 #define CHROME_BROWSER_CHROMEOS_POWER_CPU_DATA_COLLECTOR_H_
7 7
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <deque> 10 #include <deque>
(...skipping 25 matching lines...) Expand all
36 base::Time time; 36 base::Time time;
37 37
38 // Indicates whether the CPU is online. 38 // Indicates whether the CPU is online.
39 bool cpu_online; 39 bool cpu_online;
40 40
41 // A mapping from a CPU state to time spent in that state in milliseconds. 41 // A mapping from a CPU state to time spent in that state in milliseconds.
42 // For idle state samples, the name of the state at index i in this vector 42 // For idle state samples, the name of the state at index i in this vector
43 // is the name at index i in the vector returned by cpu_idle_state_names(). 43 // is the name at index i in the vector returned by cpu_idle_state_names().
44 // Similarly, for freq state occupancy, similar information is in the vector 44 // Similarly, for freq state occupancy, similar information is in the vector
45 // returned by cpu_freq_state_names(). 45 // returned by cpu_freq_state_names().
46 std::vector<int64_t> time_in_state; 46 std::vector<int64_t> time_in_state;
Daniel Erat 2017/05/02 23:41:10 if you're up for changing this, it should be eithe
weidongg 2017/05/03 21:32:31 time_in_state here may try to be consistent with t
Daniel Erat 2017/05/03 22:08:21 time_in_state_ms would be okay, but using base::Ti
47 }; 47 };
48 48
49 typedef std::deque<StateOccupancySample> StateOccupancySampleDeque; 49 typedef std::deque<StateOccupancySample> StateOccupancySampleDeque;
50 50
51 const std::vector<std::string>& cpu_idle_state_names() const { 51 const std::vector<std::string>& cpu_idle_state_names() const {
52 return cpu_idle_state_names_; 52 return cpu_idle_state_names_;
53 } 53 }
54 54
55 const std::vector<StateOccupancySampleDeque>& cpu_idle_state_data() const { 55 const std::vector<StateOccupancySampleDeque>& cpu_idle_state_data() const {
56 return cpu_idle_state_data_; 56 return cpu_idle_state_data_;
57 } 57 }
58 58
59 const std::vector<std::string>& cpu_freq_state_names() const { 59 const std::vector<std::string>& cpu_freq_state_names() const {
60 return cpu_freq_state_names_; 60 return cpu_freq_state_names_;
61 } 61 }
62 62
63 const std::vector<StateOccupancySampleDeque>& cpu_freq_state_data() const { 63 const std::vector<StateOccupancySampleDeque>& cpu_freq_state_data() const {
64 return cpu_freq_state_data_; 64 return cpu_freq_state_data_;
65 } 65 }
66 66
67 CpuDataCollector(); 67 CpuDataCollector();
68 ~CpuDataCollector(); 68 ~CpuDataCollector();
69 69
70 // Starts a repeating timer which periodically runs a callback to collect 70 // Starts a repeating timer which periodically runs a callback to collect
71 // CPU state occupancy samples. 71 // CPU state occupancy samples.
72 void Start(); 72 void Start();
73 73
74 // Samples the CPU idle state information from sysfs. |cpu_count| is the
75 // number of possible CPUs on the system. Sample at index i in |idle_samples|
76 // corresponds to the idle state information of the i-th CPU.
77 static void SampleCpuIdleData(
Daniel Erat 2017/05/02 23:41:10 only the methods that you're actually calling from
weidongg 2017/05/03 21:32:31 Done.
78 int cpu_count,
79 std::vector<std::string>* cpu_idle_state_names,
80 std::vector<CpuDataCollector::StateOccupancySample>* idle_samples);
81
82 // Read CPU frequency data of a specific CPU from the file in |path| and fill
83 // |cpu_freq_state_names| and |freq_sample| with the data.
84 // Sample file looks like:
85 // 126000 223344
86 // 216000 93495
87 // ...
88 // 1800000 321907
89 static bool ReadCpuFreqTimeInState(
90 const std::string& path,
91 std::vector<std::string>* cpu_freq_state_names,
92 CpuDataCollector::StateOccupancySample* freq_sample);
93
94 // Read CPU frequency data of all CPUs from the file in |path| and fill
95 // |cpu_freq_state_names| and |freq_samples| with the data. |cpu_count| is the
96 // number of possible CPUs on the system. Note that |freq_samples| is not
97 // empty and sample at index i in |freq_samples| corresponds to the freq state
98 // information of the i-th CPU. |cpu_online| of each sample must be set before
99 // calling this function.
100 // Sample file looks like:
101 // freq cpu0 cpu1
102 // 126000 223344 223311
103 // 216000 93495 93450
104 // ...
105 // 1800000 321907 331897
106 static bool ReadCpuFreqAllTimeInState(
107 int cpu_count,
108 const std::string& path,
109 std::vector<std::string>* cpu_freq_state_names,
110 std::vector<CpuDataCollector::StateOccupancySample>* freq_samples);
111
112 // Samples the CPU freq state information from sysfs. |cpu_count| is the
113 // number of possible CPUs on the system. Sample at index i in |freq_samples|
114 // corresponds to the freq state information of the i-th CPU.
115 static void SampleCpuFreqData(
Daniel Erat 2017/05/02 23:41:10 see above
weidongg 2017/05/03 21:32:31 Done.
116 int cpu_count,
117 std::vector<std::string>* cpu_freq_state_names,
118 std::vector<CpuDataCollector::StateOccupancySample>* freq_samples);
119
120 // Samples CPU idle and CPU freq data from sysfs. This function should run on
121 // the blocking pool as reading from sysfs is a blocking task. Elements at
122 // index i in |idle_samples| and |freq_samples| correspond to the idle and
123 // freq samples of CPU i. This also function reads the number of CPUs from
124 // sysfs if *|cpu_count| < 0.
125 static void SampleCpuStateAsync(
Daniel Erat 2017/05/02 23:41:10 see above
weidongg 2017/05/03 21:32:31 Done.
126 int* cpu_count,
127 std::vector<std::string>* cpu_idle_state_names,
128 std::vector<CpuDataCollector::StateOccupancySample>* idle_samples,
129 std::vector<std::string>* cpu_freq_state_names,
130 std::vector<CpuDataCollector::StateOccupancySample>* freq_samples);
131
74 private: 132 private:
75 // Posts callbacks to the blocking pool which collect CPU state occupancy 133 // Posts callbacks to the blocking pool which collect CPU state occupancy
76 // samples from the sysfs. 134 // samples from the sysfs.
77 void PostSampleCpuState(); 135 void PostSampleCpuState();
78 136
79 // This function commits the CPU count and samples read by 137 // This function commits the CPU count and samples read by
80 // SampleCpuStateAsync to |cpu_idle_state_data_| and 138 // SampleCpuStateAsync to |cpu_idle_state_data_| and
81 // |cpu_freq_state_data_|. Since UI is the consumer of CPU idle and freq data, 139 // |cpu_freq_state_data_|. Since UI is the consumer of CPU idle and freq data,
82 // this function should run on the UI thread. 140 // this function should run on the UI thread.
83 void SaveCpuStateSamplesOnUIThread( 141 void SaveCpuStateSamplesOnUIThread(
(...skipping 23 matching lines...) Expand all
107 // hence should be read/written to only from the blocking pool. 165 // hence should be read/written to only from the blocking pool.
108 int cpu_count_; 166 int cpu_count_;
109 167
110 base::WeakPtrFactory<CpuDataCollector> weak_ptr_factory_; 168 base::WeakPtrFactory<CpuDataCollector> weak_ptr_factory_;
111 DISALLOW_COPY_AND_ASSIGN(CpuDataCollector); 169 DISALLOW_COPY_AND_ASSIGN(CpuDataCollector);
112 }; 170 };
113 171
114 } // namespace chromeos 172 } // namespace chromeos
115 173
116 #endif // CHROME_BROWSER_CHROMEOS_POWER_CPU_DATA_COLLECTOR_H_ 174 #endif // CHROME_BROWSER_CHROMEOS_POWER_CPU_DATA_COLLECTOR_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698