From 591b7724533a1e53085ba41bdfc22ece0543b185 Mon Sep 17 00:00:00 2001 From: sashwinbalaji Date: Mon, 24 Apr 2023 16:38:51 +0800 Subject: 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 --- thermal/utils/thermal_stats_helper.cpp | 37 ++++++++++++++++++++++------------ 1 file 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 _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(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); + } } } -- cgit v1.2.3