diff --git a/storaged/storaged_info.cpp b/storaged/storaged_info.cpp index 8c0b3d191..ca2421b41 100644 --- a/storaged/storaged_info.cpp +++ b/storaged/storaged_info.cpp @@ -87,12 +87,21 @@ void storage_info_t::load_perf_history_proto(const IOPerfHistory& perf_history) day_start_tp += chrono::seconds(perf_history.day_start_sec()); nr_samples = perf_history.nr_samples(); + if (nr_samples < recent_perf.size()) { + recent_perf.erase(recent_perf.begin() + nr_samples, recent_perf.end()); + } + size_t i = 0; for (auto bw : perf_history.recent_perf()) { - recent_perf.push_back(bw); + if (i < recent_perf.size()) { + recent_perf[i] = bw; + } else { + recent_perf.push_back(bw); + } + ++i; } nr_days = perf_history.nr_days(); - int i = 0; + i = 0; for (auto bw : perf_history.daily_perf()) { daily_perf[i++] = bw; }