Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0ade88c8 authored by Mark Salyzyn's avatar Mark Salyzyn
Browse files

storaged: emplace recent_perf in load_perf_history_proto

If recent_perf contains existing content, overwrite in method
load_perf_history_proto.  If proto of recent_perf contains a lot of
history, the content would have grown with system_server crashes.

Test: setprop ro.storaged.flush_proto.interval 60
      while true;do sleep 5;stop;sleep 1;start;ps -A|grep storaged;done
      and look at value for rss should remain about 4MB over long term.
Bug: 119798824
Change-Id: I50aae7d61eb791a8fcddbbd829254baf8f708186
parent 630d803d
Loading
Loading
Loading
Loading
+11 −2
Original line number Diff line number Diff line
@@ -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()) {
        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;
    }