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

Commit 58377417 authored by Akilesh Kailash's avatar Akilesh Kailash
Browse files

Flush after every 2MB merge of replace ops.



This will be in sync with incremental OTA's where the sync
is done every 2MB. This improves performance on devices
with low memory.

Merge times for full OTA may increase by couple of seconds but
that is ok given it decreases the memory footprint.

Bug: 238052097
Test: OTA
Signed-off-by: default avatarAkilesh Kailash <akailash@google.com>
Change-Id: Ic2c8d2ffdbdb677e0c4d44e5de68ce8ccf86df34
parent 6eb4d64e
Loading
Loading
Loading
Loading
+8 −8
Original line number Original line Diff line number Diff line
@@ -71,16 +71,16 @@ int Worker::PrepareMerge(uint64_t* source_offset, int* pending_ops,
}
}


bool Worker::MergeReplaceZeroOps() {
bool Worker::MergeReplaceZeroOps() {
    // Flush every 8192 ops. Since all ops are independent and there is no
    // Flush after merging 2MB. Since all ops are independent and there is no
    // dependency between COW ops, we will flush the data and the number
    // dependency between COW ops, we will flush the data and the number
    // of ops merged in COW file for every 8192 ops. If there is a crash,
    // of ops merged in COW block device. If there is a crash, we will
    // we will end up replaying some of the COW ops which were already merged.
    // end up replaying some of the COW ops which were already merged. That is
    // That is ok.
    // ok.
    //
    //
    // Why 8192 ops ? Increasing this may improve merge time 3-4 seconds but
    // Although increasing this greater than 2MB may help in improving merge
    // we need to make sure that we checkpoint; 8k ops seems optimal. In-case
    // times; however, on devices with low memory, this can be problematic
    // if there is a crash merge should always make forward progress.
    // when there are multiple merge threads in parallel.
    int total_ops_merged_per_commit = (PAYLOAD_BUFFER_SZ / BLOCK_SZ) * 32;
    int total_ops_merged_per_commit = (PAYLOAD_BUFFER_SZ / BLOCK_SZ) * 2;
    int num_ops_merged = 0;
    int num_ops_merged = 0;


    SNAP_LOG(INFO) << "MergeReplaceZeroOps started....";
    SNAP_LOG(INFO) << "MergeReplaceZeroOps started....";