bufferpool@2.0 tune eviction params

bufferpool tries to manage memory consumption as low as 15MB usually.
Since it is too harsh for graphic input buffer use cases, if # of
buffers are under certain threshold make bufferpool ignore total memory
consumption.

Bug: 141605804
Change-Id: I20bd0438fede018e26984e0e3bc9a2007b0bc29b
gugelfrei
Sungtak Lee 5 years ago
parent 6112a9c691
commit 30dbaa2016

@ -37,7 +37,7 @@ namespace {
static constexpr int64_t kLogDurationUs = 5000000; // 5 secs static constexpr int64_t kLogDurationUs = 5000000; // 5 secs
static constexpr size_t kMinAllocBytesForEviction = 1024*1024*15; static constexpr size_t kMinAllocBytesForEviction = 1024*1024*15;
static constexpr size_t kMinBufferCountForEviction = 40; static constexpr size_t kMinBufferCountForEviction = 25;
} }
// Buffer structure in bufferpool process // Buffer structure in bufferpool process
@ -718,8 +718,8 @@ void Accessor::Impl::BufferPool::cleanUp(bool clearCache) {
mStats.mTotalFetches, mStats.mTotalTransfers); mStats.mTotalFetches, mStats.mTotalTransfers);
} }
for (auto freeIt = mFreeBuffers.begin(); freeIt != mFreeBuffers.end();) { for (auto freeIt = mFreeBuffers.begin(); freeIt != mFreeBuffers.end();) {
if (!clearCache && mStats.mSizeCached < kMinAllocBytesForEviction if (!clearCache && (mStats.mSizeCached < kMinAllocBytesForEviction
&& mBuffers.size() < kMinBufferCountForEviction) { || mBuffers.size() < kMinBufferCountForEviction)) {
break; break;
} }
auto it = mBuffers.find(*freeIt); auto it = mBuffers.find(*freeIt);

Loading…
Cancel
Save