summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsashwinbalaji <sashwinbalaji@google.com>2023-04-24 16:38:51 +0800
committerS Ashwin Balaji <sashwinbalaji@google.com>2023-04-28 09:04:04 +0000
commit591b7724533a1e53085ba41bdfc22ece0543b185 (patch)
treefbd20a6237ab8113507054a06b7ee8524977cadb
parentacf9860a391fb2cfb2333a7f9c117bf602e246df (diff)
downloadpixel-591b7724533a1e53085ba41bdfc22ece0543b185.tar.gz
thermal: Update thermal stats state only when state change
Add a check to verify if new state is not same as existing state to avoid unnecessary updates. Bug: 270100418 Test: local flash and verify update logs Change-Id: Id7fa5583127bea7efc605f08d315ff6e5cd7679a
-rw-r--r--thermal/utils/thermal_stats_helper.cpp37
1 files changed, 24 insertions, 13 deletions
diff --git a/thermal/utils/thermal_stats_helper.cpp b/thermal/utils/thermal_stats_helper.cpp
index ead6dce3..27ac3190 100644
--- a/thermal/utils/thermal_stats_helper.cpp
+++ b/thermal/utils/thermal_stats_helper.cpp
@@ -194,15 +194,21 @@ void ThermalStatsHelper::updateSensorCdevRequestStats(std::string_view sensor,
auto &request_stats = sensor_cdev_request_stats_map_[sensor.data()][cdev.data()];
for (auto &stats_by_threshold : request_stats.stats_by_custom_threshold) {
int value = calculateThresholdBucket(stats_by_threshold.thresholds, new_value);
- LOG(VERBOSE) << "Updating bindedCdev stats for sensor: " << sensor.data()
- << " , cooling_device: " << cdev.data() << " with new value: " << value;
- updateStatsRecord(&stats_by_threshold.stats_record, value);
+ if (value != stats_by_threshold.stats_record.cur_state) {
+ LOG(VERBOSE) << "Updating bindedCdev stats for sensor: " << sensor.data()
+ << " , cooling_device: " << cdev.data() << " with new value: " << value;
+ updateStatsRecord(&stats_by_threshold.stats_record, value);
+ }
}
if (request_stats.stats_by_default_threshold.has_value()) {
- LOG(VERBOSE) << "Updating bindedCdev stats for sensor: " << sensor.data()
- << " , cooling_device: " << cdev.data() << " with new value: " << new_value;
- updateStatsRecord(&request_stats.stats_by_default_threshold.value(), new_value);
+ auto &stats_record = request_stats.stats_by_default_threshold.value();
+ if (new_value != stats_record.cur_state) {
+ LOG(VERBOSE) << "Updating bindedCdev stats for sensor: " << sensor.data()
+ << " , cooling_device: " << cdev.data()
+ << " with new value: " << new_value;
+ updateStatsRecord(&stats_record, new_value);
+ }
}
}
@@ -215,9 +221,11 @@ void ThermalStatsHelper::updateSensorTempStatsByThreshold(std::string_view senso
for (auto &stats_by_threshold :
sensor_temp_stats_map_[sensor.data()].stats_by_custom_threshold) {
int value = calculateThresholdBucket(stats_by_threshold.thresholds, temperature);
- LOG(VERBOSE) << "Updating sensor stats for sensor: " << sensor.data()
- << " with value: " << value;
- updateStatsRecord(&stats_by_threshold.stats_record, value);
+ if (value != stats_by_threshold.stats_record.cur_state) {
+ LOG(VERBOSE) << "Updating sensor stats for sensor: " << sensor.data()
+ << " with value: " << value;
+ updateStatsRecord(&stats_by_threshold.stats_record, value);
+ }
}
}
@@ -226,11 +234,14 @@ void ThermalStatsHelper::updateSensorTempStatsBySeverity(std::string_view sensor
std::unique_lock<std::shared_mutex> _lock(sensor_temp_stats_map_mutex_);
if (sensor_temp_stats_map_.count(sensor.data()) &&
sensor_temp_stats_map_[sensor.data()].stats_by_default_threshold.has_value()) {
+ auto &stats_record =
+ sensor_temp_stats_map_[sensor.data()].stats_by_default_threshold.value();
int value = static_cast<int>(severity);
- LOG(VERBOSE) << "Updating sensor stats for sensor: " << sensor.data()
- << " with value: " << value;
- updateStatsRecord(&sensor_temp_stats_map_[sensor.data()].stats_by_default_threshold.value(),
- value);
+ if (value != stats_record.cur_state) {
+ LOG(VERBOSE) << "Updating sensor stats for sensor: " << sensor.data()
+ << " with value: " << value;
+ updateStatsRecord(&stats_record, value);
+ }
}
}