Try to build with liburing by default. (#8322)
Summary: By default, try to build with liburing. For make, if ROCKSDB_USE_IO_URING is not set, treat as 1, which means RocksDB will try to build with liburing. For cmake, add WITH_LIBURING to control it, with default on. Pull Request resolved: https://github.com/facebook/rocksdb/pull/8322 Test Plan: Build using cmake and make. Reviewed By: anand1976 Differential Revision: D28586498 fbshipit-source-id: cfd39159ab697f4b93a9293a59c07f839b1e7ed5
This commit is contained in:
parent
2f1984dd45
commit
bd3d080ef8
@ -62,6 +62,7 @@ if(CCACHE_FOUND)
|
|||||||
endif(CCACHE_FOUND)
|
endif(CCACHE_FOUND)
|
||||||
|
|
||||||
option(WITH_JEMALLOC "build with JeMalloc" OFF)
|
option(WITH_JEMALLOC "build with JeMalloc" OFF)
|
||||||
|
option(WITH_LIBURING "build with liburing" ON)
|
||||||
option(WITH_SNAPPY "build with SNAPPY" OFF)
|
option(WITH_SNAPPY "build with SNAPPY" OFF)
|
||||||
option(WITH_LZ4 "build with lz4" OFF)
|
option(WITH_LZ4 "build with lz4" OFF)
|
||||||
option(WITH_ZLIB "build with zlib" OFF)
|
option(WITH_ZLIB "build with zlib" OFF)
|
||||||
@ -338,6 +339,22 @@ if (NOT BUILTIN_ATOMIC)
|
|||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
if (WITH_LIBURING)
|
||||||
|
set(CMAKE_REQUIRED_FLAGS "-luring")
|
||||||
|
CHECK_CXX_SOURCE_COMPILES("
|
||||||
|
#include <liburing.h>
|
||||||
|
int main() {
|
||||||
|
struct io_uring ring;
|
||||||
|
io_uring_queue_init(1, &ring, 0);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
" HAS_LIBURING)
|
||||||
|
if (HAS_LIBURING)
|
||||||
|
add_definitions(-DROCKSDB_IOURING_PRESENT)
|
||||||
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -luring")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
# Reset the required flags
|
# Reset the required flags
|
||||||
set(CMAKE_REQUIRED_FLAGS ${OLD_CMAKE_REQUIRED_FLAGS})
|
set(CMAKE_REQUIRED_FLAGS ${OLD_CMAKE_REQUIRED_FLAGS})
|
||||||
|
|
||||||
|
@ -36,6 +36,9 @@
|
|||||||
### Default Option Change
|
### Default Option Change
|
||||||
* When options.arena_block_size <= 0 (default value 0), still use writer_buffer_size / 8 but cap to 1MB. Too large alloation size might not be friendly to allocator and might cause performance issues in extreme cases.
|
* When options.arena_block_size <= 0 (default value 0), still use writer_buffer_size / 8 but cap to 1MB. Too large alloation size might not be friendly to allocator and might cause performance issues in extreme cases.
|
||||||
|
|
||||||
|
### Build
|
||||||
|
* By default, try to build with liburing. For make, if ROCKSDB_USE_IO_URING is not set, treat as enable, which means RocksDB will try to build with liburing. Users can disable it with ROCKSDB_USE_IO_URING=0. For cmake, add WITH_LIBURING to control it, with default on.
|
||||||
|
|
||||||
## 6.20.0 (2021-04-16)
|
## 6.20.0 (2021-04-16)
|
||||||
### Behavior Changes
|
### Behavior Changes
|
||||||
* `ColumnFamilyOptions::sample_for_compression` now takes effect for creation of all block-based tables. Previously it only took effect for block-based tables created by flush.
|
* `ColumnFamilyOptions::sample_for_compression` now takes effect for creation of all block-based tables. Previously it only took effect for block-based tables created by flush.
|
||||||
|
@ -175,7 +175,10 @@ case "$TARGET_OS" in
|
|||||||
PLATFORM_LDFLAGS="$PLATFORM_LDFLAGS -latomic"
|
PLATFORM_LDFLAGS="$PLATFORM_LDFLAGS -latomic"
|
||||||
fi
|
fi
|
||||||
PLATFORM_LDFLAGS="$PLATFORM_LDFLAGS -lpthread -lrt -ldl"
|
PLATFORM_LDFLAGS="$PLATFORM_LDFLAGS -lpthread -lrt -ldl"
|
||||||
if test $ROCKSDB_USE_IO_URING; then
|
if test -z "$ROCKSDB_USE_IO_URING"; then
|
||||||
|
ROCKSDB_USE_IO_URING=1
|
||||||
|
fi
|
||||||
|
if test "$ROCKSDB_USE_IO_URING" -ne 0; then
|
||||||
# check for liburing
|
# check for liburing
|
||||||
$CXX $PLATFORM_CXXFLAGS -x c++ - -luring -o /dev/null 2>/dev/null <<EOF
|
$CXX $PLATFORM_CXXFLAGS -x c++ - -luring -o /dev/null 2>/dev/null <<EOF
|
||||||
#include <liburing.h>
|
#include <liburing.h>
|
||||||
|
Loading…
Reference in New Issue
Block a user