diff options
author | sashwinbalaji <sashwinbalaji@google.com> | 2023-04-24 16:38:51 +0800 |
---|---|---|
committer | S Ashwin Balaji <sashwinbalaji@google.com> | 2023-04-28 09:04:04 +0000 |
commit | 591b7724533a1e53085ba41bdfc22ece0543b185 (patch) | |
tree | fbd20a6237ab8113507054a06b7ee8524977cadb | |
parent | acf9860a391fb2cfb2333a7f9c117bf602e246df (diff) | |
download | pixel-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.cpp | 37 |
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); + } } } |