rocksdb/port/win
burtonli b5c99cc908 Disable onboard cache for compaction output
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
2017-12-21 18:41:34 -08:00
..
env_default.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
env_win.cc Disable onboard cache for compaction output 2017-12-21 18:41:34 -08:00
env_win.h Change RocksDB License 2017-07-15 16:11:23 -07:00
io_win.cc Disable onboard cache for compaction output 2017-12-21 18:41:34 -08:00
io_win.h Disable onboard cache for compaction output 2017-12-21 18:41:34 -08:00
port_win.cc Enable cacheline_aligned_alloc() to allocate from jemalloc if enabled. 2017-10-27 13:27:12 -07:00
port_win.h Enable cacheline_aligned_alloc() to allocate from jemalloc if enabled. 2017-10-27 13:27:12 -07:00
win_jemalloc.cc Enable cacheline_aligned_alloc() to allocate from jemalloc if enabled. 2017-10-27 13:27:12 -07:00
win_logger.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
win_logger.h Change RocksDB License 2017-07-15 16:11:23 -07:00
win_thread.cc Fix a race condition in WindowsThread (port::Thread) 2017-12-07 13:42:53 -08:00
win_thread.h Fix a race condition in WindowsThread (port::Thread) 2017-12-07 13:42:53 -08:00
xpress_win.cc Enable cacheline_aligned_alloc() to allocate from jemalloc if enabled. 2017-10-27 13:27:12 -07:00
xpress_win.h Change RocksDB License 2017-07-15 16:11:23 -07:00