Revision 80de9004649753d87fa1b2d41127b1401a4c0065 authored by Levi Tamasi on 13 December 2019, 20:45:49 UTC, committed by Levi Tamasi on 17 December 2019, 15:52:22 UTC
Summary:
We have observed an increase in CPU load caused by frequent calls to
`ColumnFamilyData::InstallSuperVersion` from `DBImpl::TrimMemtableHistory`
when using `max_write_buffer_size_to_maintain` to limit the amount of
memtable history maintained for transaction conflict checking. As it turns out,
this is caused by the code creating and installing a new `SuperVersion` even if
no memtables were actually trimmed. The patch adds a check to avoid this.
Pull Request resolved: https://github.com/facebook/rocksdb/pull/6169

Test Plan:
Compared `perf` output for

```
./db_bench -benchmarks=randomtransaction -optimistic_transaction_db=1 -statistics -stats_interval_seconds=1 -duration=90 -num=500000 --max_write_buffer_size_to_maintain=16000000 --transaction_set_snapshot=1 --threads=32
```

before and after the change. With the fix, the call chain `rocksdb::DBImpl::TrimMemtableHistory` ->
`rocksdb::ColumnFamilyData::InstallSuperVersion` -> `rocksdb::ThreadLocalPtr::StaticMeta::Scrape`
no longer registers in the `perf` report.

Differential Revision: D19031509

Pulled By: ltamasi

fbshipit-source-id: 02686fce594e5b50eba0710e4b28a9b808c8aa20
1 parent 1d9eae3
History
File Mode Size
cf_options.cc -rw-r--r-- 10.3 KB
cf_options.h -rw-r--r-- 8.8 KB
db_options.cc -rw-r--r-- 15.5 KB
db_options.h -rw-r--r-- 3.4 KB
options.cc -rw-r--r-- 25.6 KB
options_helper.cc -rw-r--r-- 91.8 KB
options_helper.h -rw-r--r-- 9.0 KB
options_parser.cc -rw-r--r-- 29.9 KB
options_parser.h -rw-r--r-- 5.1 KB
options_sanity_check.cc -rw-r--r-- 1.1 KB
options_sanity_check.h -rw-r--r-- 1.7 KB
options_settable_test.cc -rw-r--r-- 21.6 KB
options_test.cc -rw-r--r-- 78.3 KB

back to top