• S
    Concurrent memtable inserter to update counters and flush state after all inserts · 907f24d0
    sdong 提交于
    Summary: In concurrent memtable insert case, updating counters in MemTable::Add() can count for 5% CPU usage. By batch all the counters and update in the end of the write batch, the CPU overheads are overhead in the use cases where more than one key is updated in one write batch.
    
    Test Plan:
    Write throughput increases 12% with this benchmark setting:
    
    TEST_TMPDIR=/dev/shm/ ./db_bench --benchmarks=fillrandom -disable_auto_compactions -level0_slowdown_writes_trigger=9999 -level0_stop_writes_trigger=9999 -num=10000000 --writes=1000000 -max_background_flushes=16 -max_write_buffer_number=16 --threads=64 --batch_size=128   -allow_concurrent_memtable_write -enable_write_thread_adaptive_yield
    
    Reviewers: andrewkr, IslamAbdelRahman, ngbronson, igor
    
    Reviewed By: ngbronson
    
    Subscribers: ngbronson, leveldb, andrewkr, dhruba
    
    Differential Revision: https://reviews.facebook.net/D60495
    907f24d0
memtable.h 15.4 KB