rocksdb/util
Maysam Yabandeh 11526252cc Pinnableslice (2nd attempt)
Summary:
PinnableSlice

    Summary:
    Currently the point lookup values are copied to a string provided by the
    user. This incures an extra memcpy cost. This patch allows doing point lookup
    via a PinnableSlice which pins the source memory location (instead of
    copying their content) and releases them after the content is consumed
    by the user. The old API of Get(string) is translated to the new API
    underneath.

    Here is the summary for improvements:

    value 100 byte: 1.8% regular, 1.2% merge values
    value 1k byte: 11.5% regular, 7.5% merge values
    value 10k byte: 26% regular, 29.9% merge values
    The improvement for merge could be more if we extend this approach to
    pin the merge output and delay the full merge operation until the user
    actually needs it. We have put that for future work.

    PS:
    Sometimes we observe a small decrease in performance when switching from
    t5452014 to this patch but with the old Get(string) API. The d
Closes https://github.com/facebook/rocksdb/pull/1756

Differential Revision: D4391738

Pulled By: maysamyabandeh

fbshipit-source-id: 6f3edd3
2017-03-13 11:54:10 -07:00
..
aligned_buffer.h direct reads refactor 2017-01-11 16:54:12 -08:00
allocator.h Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
arena_test.cc Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
arena.cc FreeBSD: malloc_usable_size is in <malloc_np.h> (#1428) 2016-10-28 10:44:52 -07:00
arena.h Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
autovector_test.cc Eliminate use of 'using namespace std'. Also remove a number of ADL references to std functions. 2016-05-20 07:42:18 -07:00
autovector.h Implement non-exclusive locks 2016-12-05 17:39:17 -08:00
bloom_test.cc Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
bloom.cc Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
build_version.cc.in Makefile: generate util/build_version.cc from .in file (#1384) 2016-10-25 11:31:39 -07:00
build_version.h Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
cache_bench.cc Introduce ClockCache 2016-08-19 12:28:19 -07:00
cache_test.cc NewLRUCache() to pick number of shard bits based on capacity if not given 2017-01-27 06:39:12 -08:00
cf_options.cc [rocksdb][PR] Remove option min_partial_merge_operands and verify_checksums_in_comp… 2017-02-23 15:09:12 -08:00
cf_options.h [rocksdb][PR] Remove option min_partial_merge_operands and verify_checksums_in_comp… 2017-02-23 15:09:12 -08:00
channel.h Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
clock_cache.cc NewLRUCache() to pick number of shard bits based on capacity if not given 2017-01-27 06:39:12 -08:00
clock_cache.h Introduce ClockCache 2016-08-19 12:28:19 -07:00
coding_test.cc Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
coding.cc Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
coding.h TableBuilder / TableReader support for range deletion 2016-08-19 15:10:31 -07:00
compaction_job_stats_impl.cc Single Delete Mismatch and Fallthrough statistics 2016-08-16 08:21:43 -07:00
comparator.cc Improve BytewiseComparatorImpl::FindShortestSeparator 2016-04-25 23:02:14 -07:00
compression.h Remove use of deprecated LZ4 function 2016-11-21 12:24:14 -08:00
concurrent_arena.cc Gcc 7 error expansion to defined 2016-12-13 18:39:14 -08:00
concurrent_arena.h Gcc 7 error expansion to defined 2016-12-13 18:39:14 -08:00
crc32c_test.cc Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
crc32c.cc Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
crc32c.h Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
db_options.cc Remove disableDataSync option 2017-02-13 11:09:13 -08:00
db_options.h Remove disableDataSync option 2017-02-13 11:09:13 -08:00
delete_scheduler_test.cc Windows thread 2017-02-06 14:54:18 -08:00
delete_scheduler.cc Windows thread 2017-02-06 14:54:18 -08:00
delete_scheduler.h Windows thread 2017-02-06 14:54:18 -08:00
dynamic_bloom_test.cc Windows thread 2017-02-06 14:54:18 -08:00
dynamic_bloom.cc Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
dynamic_bloom.h Fix the wrong address for PREFETCH in DynamicBloom::Prefetch 2017-02-28 10:39:11 -08:00
env_basic_test.cc Generalize Env registration framework 2017-01-25 16:09:14 -08:00
env_chroot.cc Support POSIX RandomRWFile 2016-09-13 12:08:22 -07:00
env_chroot.h Introduce chroot Env 2016-05-06 17:42:50 -07:00
env_hdfs.cc Return finer-granularity status from Env::GetChildren* 2016-12-12 12:54:13 -08:00
env_posix.cc Remove bulk loading and auto_roll_logger in rocksdb_lite 2017-02-28 11:09:11 -08:00
env_test.cc Remove bulk loading and auto_roll_logger in rocksdb_lite 2017-02-28 11:09:11 -08:00
env.cc direct io write support 2016-12-22 13:09:19 -08:00
event_logger_test.cc Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
event_logger.cc Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
event_logger.h Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
fault_injection_test_env.cc Flush job should release reference current version if sync log failed 2017-01-19 23:09:15 -08:00
fault_injection_test_env.h [rocksdb] Recovery path sequence miscount fix 2016-05-10 14:06:07 -07:00
file_reader_writer_test.cc alignment is on in ReadaheadRandomAccessFile::Read() 2017-02-18 12:09:12 -08:00
file_reader_writer.cc Statistic for how often rate limiter is drained 2017-03-02 17:54:15 -08:00
file_reader_writer.h Statistic for how often rate limiter is drained 2017-03-02 17:54:15 -08:00
file_util.cc Always fsync the file after file copying 2016-12-28 19:09:16 -08:00
file_util.h Always fsync the file after file copying 2016-12-28 19:09:16 -08:00
filelock_test.cc Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
filter_policy.cc Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
hash_map.h Use more efficient hash map for deadlock detection 2016-11-19 11:39:15 -08:00
hash.cc Fix travis (compile for clang < 3.9) 2016-12-01 10:09:22 -08:00
hash.h Optimize sequential insert into memtable - Part 1: Interface 2016-11-13 19:09:18 -08:00
heap_test.cc Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
heap.h Cache heap::downheap() root comparison (optimize heap cmp call) 2016-12-01 13:39:14 -08:00
histogram_test.cc Fix Build Error 2016-03-11 22:56:25 -08:00
histogram_windowing.cc Fix in HistogramWindowingImpl 2016-03-17 14:28:41 -07:00
histogram_windowing.h Histogram Concurrency Improvement and Time-Windowing Support 2016-03-11 16:54:25 -08:00
histogram.cc fix compile for VS2015 2017-03-10 11:24:09 -08:00
histogram.h Histogram Concurrency Improvement and Time-Windowing Support 2016-03-11 16:54:25 -08:00
instrumented_mutex.cc DBSSTTest.RateLimitedDelete: not to use real clock 2016-10-24 10:35:00 -07:00
instrumented_mutex.h Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
io_posix.cc detect logical sector size 2017-02-23 11:25:36 -08:00
io_posix.h detect logical sector size 2017-02-23 11:25:36 -08:00
iostats_context_imp.h Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
iostats_context_test.cc IOStatsContext::ToString() add option to exclude zero counters 2016-02-23 10:26:24 -08:00
iostats_context.cc IOStatsContext::ToString() add option to exclude zero counters 2016-02-23 10:26:24 -08:00
kv_map.h Store internal keys in TombstoneMap 2016-11-09 15:09:18 -08:00
log_buffer.cc Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
log_buffer.h Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
log_write_bench.cc direct io write support 2016-12-22 13:09:19 -08:00
logging.cc util/logging.cc: buffer of insufficient size (gcc-7 -Werror=format-length) 2016-12-13 18:39:14 -08:00
logging.h Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
lru_cache_test.cc LRU cache mid-point insertion 2016-08-19 16:43:31 -07:00
lru_cache.cc NewLRUCache() to pick number of shard bits based on capacity if not given 2017-01-27 06:39:12 -08:00
lru_cache.h Allow incrementing refcount on cache handles 2017-01-10 16:54:20 -08:00
memenv.cc direct io write support 2016-12-22 13:09:19 -08:00
memory_usage.h Report memory usage by memtable insert hints map. 2016-11-15 20:24:13 -08:00
mock_env_test.cc Create env_basic_test [pluggable Env part 2] 2016-06-03 15:13:03 -07:00
mock_env.cc Fix some bugs in MockEnv 2017-03-13 09:54:11 -07:00
mock_env.h Fix some bugs in MockEnv 2017-03-13 09:54:11 -07:00
murmurhash.cc Gcc 7 fallthrough 2016-12-14 19:24:25 -08:00
murmurhash.h Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
mutexlock.h Persistent Read Cache (6) Persistent cache tier implentation - File layout 2016-07-19 12:01:46 -07:00
options_helper.cc Make compaction_pri settable through option string 2017-03-02 10:24:12 -08:00
options_helper.h Builders for partition filter 2017-03-07 13:54:12 -08:00
options_parser.cc Make compaction_pri settable through option string 2017-03-02 10:24:12 -08:00
options_parser.h Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
options_sanity_check.cc Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
options_sanity_check.h Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
options_settable_test.cc Builders for partition filter 2017-03-07 13:54:12 -08:00
options_test.cc Remove skip_table_builder_flush and default it to true 2017-03-02 16:54:10 -08:00
options.cc Move advanced column family options to advanced_options.h 2017-02-27 17:54:14 -08:00
perf_context_imp.h fix ios build error 2016-02-17 20:22:40 +08:00
perf_context.cc Less linear search in DBIter::Seek() when keys are overwritten a lot 2016-11-28 10:24:11 -08:00
perf_level_imp.h Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
perf_level.cc Assert boundary checks for SetPerfLevel() 2016-06-01 09:07:09 -07:00
perf_step_timer.h Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
posix_logger.h Show More DB Stats in info logs 2016-10-29 16:09:18 -07:00
random.cc Gcc 7 error expansion to defined 2016-12-13 18:39:14 -08:00
random.h Fixes warnings and ensure correct int behavior on 32-bit platforms. 2016-03-16 22:57:57 +01:00
rate_limiter_test.cc Statistic for how often rate limiter is drained 2017-03-02 17:54:15 -08:00
rate_limiter.cc Statistic for how often rate limiter is drained 2017-03-02 17:54:15 -08:00
rate_limiter.h Statistic for how often rate limiter is drained 2017-03-02 17:54:15 -08:00
sharded_cache.cc NewLRUCache() to pick number of shard bits based on capacity if not given 2017-01-27 06:39:12 -08:00
sharded_cache.h NewLRUCache() to pick number of shard bits based on capacity if not given 2017-01-27 06:39:12 -08:00
slice_transform_test.cc Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
slice.cc Merge db/slice.cc into util/slice.cc 2016-06-10 16:37:36 -07:00
sst_file_manager_impl.cc fixed typo 2017-01-23 12:54:13 -08:00
sst_file_manager_impl.h Remove sst_file_manager option from LITE 2016-12-21 17:54:21 -08:00
statistics_test.cc Fix Statistics TickersNameMap miss match with Tickers enum 2016-07-25 16:05:50 -07:00
statistics.cc add max to histogram stats 2017-03-08 22:24:15 -08:00
statistics.h Add Statistics::getAndResetTickerCount(). 2016-10-11 10:54:11 -07:00
status_message.cc New subcode for IOError to detect the ESTALE errno 2017-02-17 10:54:13 -08:00
status.cc Fix rocksdb::Status::getState 2017-01-03 18:39:14 -08:00
stderr_logger.h Stderr info logger 2016-04-01 11:06:06 -07:00
stop_watch.h Use StopWatch to do statistic job in db_impl_add_file.cc 2016-08-02 14:53:29 -07:00
string_util.cc Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
string_util.h FreeBSD does not have std::to_string (#1190) 2016-06-29 07:35:17 -07:00
sync_point.cc gcc-7 requires include <functional> for std::function 2016-12-16 11:24:18 -08:00
sync_point.h gcc-7 requires include <functional> for std::function 2016-12-16 11:24:18 -08:00
testharness.cc Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
testharness.h Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
testutil.cc Pinnableslice (2nd attempt) 2017-03-13 11:54:10 -07:00
testutil.h Support SST files with Global sequence numbers [reland] 2016-10-18 16:59:37 -07:00
thread_list_test.cc Gcc 7 error expansion to defined 2016-12-13 18:39:14 -08:00
thread_local_test.cc Windows thread 2017-02-06 14:54:18 -08:00
thread_local.cc Move ThreadLocal implementation into .cc 2017-02-02 14:09:12 -08:00
thread_local.h Move ThreadLocal implementation into .cc 2017-02-02 14:09:12 -08:00
thread_operation.h Gcc 7 error expansion to defined 2016-12-13 18:39:14 -08:00
thread_status_impl.cc Gcc 7 error expansion to defined 2016-12-13 18:39:14 -08:00
thread_status_updater_debug.cc Gcc 7 error expansion to defined 2016-12-13 18:39:14 -08:00
thread_status_updater.cc Gcc 7 error expansion to defined 2016-12-13 18:39:14 -08:00
thread_status_updater.h Gcc 7 error expansion to defined 2016-12-13 18:39:14 -08:00
thread_status_util_debug.cc Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
thread_status_util.cc Gcc 7 error expansion to defined 2016-12-13 18:39:14 -08:00
thread_status_util.h Gcc 7 error expansion to defined 2016-12-13 18:39:14 -08:00
threadpool_imp.cc Add missing include for abort() 2017-02-27 17:24:13 -08:00
threadpool_imp.h Windows thread 2017-02-06 14:54:18 -08:00
transaction_test_util.cc Gcc-7 buffer size insufficient 2016-12-14 19:24:26 -08:00
transaction_test_util.h Fix AppVeyor build error 2016-03-15 10:57:33 -07:00
xxhash.cc Enable MS Warning C4804 : unsafe use of type 'bool' in operation 2015-11-18 16:23:19 -08:00
xxhash.h Prevent xxhash symbols from polluting global namespace 2015-03-12 12:07:10 -07:00