• B
    Disable onboard cache for compaction output · b5c99cc9
    burtonli 提交于
    Summary:
    FILE_FLAG_WRITE_THROUGH is for disabling device on-board cache in windows API, which should be disabled if user doesn't need system cache.
    There was a perf issue related with this, we found during memtable flush, the high percentile latency jumps significantly. During profiling, we found those high latency (P99.9) read requests got queue-jumped by write requests from memtable flush and takes 80ms or even more time to wait, even when SSD overall IO throughput is relatively low.
    
    After enabling FILE_FLAG_WRITE_THROUGH, we rerun the test found high percentile latency drops a lot without observable impact on writes.
    
    Scenario 1: 40MB/s + 40MB/s  R/W compaction throughput
    
     Original | FILE_FLAG_WRITE_THROUGH | Percentage reduction
    ---------------------------------------------------------------
    P99.9 | 56.897 ms | 35.593 ms | -37.4%
    P99 | 3.905 ms | 3.896 ms | -2.8%
    
    Scenario 2:  14MB/s + 14MB/s R/W compaction throughput, cohosted with 100+ other rocksdb instances have manually triggered memtable flush operations (memtable is tiny), creating a lot of randomized the small file writes operations during test.
    
    Original | FILE_FLAG_WRITE_THROUGH | Percentage reduction
    ---------------------------------------------------------------
    P99.9 | 86.227   ms | 50.436 ms | -41.5%
    P99 | 8.415   ms | 3.356 ms | -60.1%
    Closes https://github.com/facebook/rocksdb/pull/3225
    
    Differential Revision: D6624174
    
    Pulled By: miasantreble
    
    fbshipit-source-id: 321b86aee9d74470840c70e5d0d4fa9880660a91
    b5c99cc9
env_win.cc 30.7 KB