Merge "libsnapshot: reserve 16x space for ops" into main am: 550a176551
Original change: https://android-review.googlesource.com/c/platform/system/core/+/3004570 Change-Id: I09b49ce984e8e1829a6af0be5baf0e51063a7d81 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
commit
a9670fee81
2 changed files with 6 additions and 2 deletions
|
@ -173,7 +173,7 @@ bool CowWriterV3::ParseOptions() {
|
|||
batch_size_ = std::max<size_t>(options_.cluster_ops, 1);
|
||||
data_vec_.reserve(batch_size_);
|
||||
cached_data_.reserve(batch_size_);
|
||||
cached_ops_.reserve(batch_size_);
|
||||
cached_ops_.reserve(batch_size_ * kNonDataOpBufferSize);
|
||||
}
|
||||
|
||||
if (batch_size_ > 1) {
|
||||
|
@ -342,7 +342,8 @@ bool CowWriterV3::NeedsFlush() const {
|
|||
// Allow bigger batch sizes for ops without data. A single CowOperationV3
|
||||
// struct uses 14 bytes of memory, even if we cache 200 * 16 ops in memory,
|
||||
// it's only ~44K.
|
||||
return cached_data_.size() >= batch_size_ || cached_ops_.size() >= batch_size_ * 16;
|
||||
return cached_data_.size() >= batch_size_ ||
|
||||
cached_ops_.size() >= batch_size_ * kNonDataOpBufferSize;
|
||||
}
|
||||
|
||||
bool CowWriterV3::ConstructCowOpCompressedBuffers(uint64_t new_block_start, const void* data,
|
||||
|
|
|
@ -28,6 +28,9 @@ namespace android {
|
|||
namespace snapshot {
|
||||
|
||||
using namespace android::storage_literals;
|
||||
// This is a multiple on top of the number of data ops that can be stored in our cache at once. This
|
||||
// is added so that we can cache more non-data ops as it takes up less space.
|
||||
static constexpr uint32_t kNonDataOpBufferSize = 16;
|
||||
|
||||
class CowWriterV3 : public CowWriterBase {
|
||||
public:
|
||||
|
|
Loading…
Reference in a new issue