From d11bcfefaf95d3c0c9d920b10eb7c1e42d273f04 Mon Sep 17 00:00:00 2001 From: aoiasd <45024769+aoiasd@users.noreply.github.com> Date: Fri, 26 May 2023 20:37:28 +0800 Subject: [PATCH] Refine Rocksdb option (#24394) Signed-off-by: aoiasd --- internal/core/thirdparty/rocksdb/CMakeLists.txt | 1 + internal/core/thirdparty/rocksdb/rocksdb-win.pc.in | 4 ++-- internal/core/thirdparty/rocksdb/rocksdb.pc.in | 2 +- internal/mq/mqimpl/rocksmq/server/rocksmq_impl.go | 10 ++++++++++ 4 files changed, 14 insertions(+), 3 deletions(-) diff --git a/internal/core/thirdparty/rocksdb/CMakeLists.txt b/internal/core/thirdparty/rocksdb/CMakeLists.txt index 8bed87a7ba..e6f487ca14 100644 --- a/internal/core/thirdparty/rocksdb/CMakeLists.txt +++ b/internal/core/thirdparty/rocksdb/CMakeLists.txt @@ -33,6 +33,7 @@ macro( build_rocksdb ) "-DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX}" "-DROCKSDB_INSTALL_ON_WINDOWS=ON" "-DFAIL_ON_WARNINGS=OFF" + "-DWITH_ZSTD=ON" ${FPIC_ARG} #This is used to solve 'illegal instruction' problem in some machine "-DPORTABLE=ON" diff --git a/internal/core/thirdparty/rocksdb/rocksdb-win.pc.in b/internal/core/thirdparty/rocksdb/rocksdb-win.pc.in index b0082aeea6..a30ecc0068 100644 --- a/internal/core/thirdparty/rocksdb/rocksdb-win.pc.in +++ b/internal/core/thirdparty/rocksdb/rocksdb-win.pc.in @@ -5,6 +5,6 @@ Name: Rocksdb Description: Rocksdb Version: @ROCKSDB_VERSION@ -Libs: -L${libdir} -lrocksdb -Libs.private: -lz -lbz2 +Libs: -L${libdir} -lrocksdb -lzstd +Libs.private: -lz -lbz2 Cflags: -I${includedir} diff --git a/internal/core/thirdparty/rocksdb/rocksdb.pc.in b/internal/core/thirdparty/rocksdb/rocksdb.pc.in index 1c55c9a8f9..50237b531f 100644 --- a/internal/core/thirdparty/rocksdb/rocksdb.pc.in +++ b/internal/core/thirdparty/rocksdb/rocksdb.pc.in @@ -5,6 +5,6 @@ Name: Rocksdb Description: Rocksdb Version: @ROCKSDB_VERSION@ -Libs: -L${libdir} -lrocksdb +Libs: -L${libdir} -lrocksdb -lzstd Libs.private: -lz -lbz2 Cflags: -I${includedir} diff --git a/internal/mq/mqimpl/rocksmq/server/rocksmq_impl.go b/internal/mq/mqimpl/rocksmq/server/rocksmq_impl.go index 865cdb97b4..bf0f86fca2 100644 --- a/internal/mq/mqimpl/rocksmq/server/rocksmq_impl.go +++ b/internal/mq/mqimpl/rocksmq/server/rocksmq_impl.go @@ -154,9 +154,16 @@ func NewRocksMQ(params paramtable.BaseTable, name string, idAllocator allocator. log.Info("Start rocksmq ", zap.Int("max proc", maxProcs), zap.Int("parallism", parallelism), zap.Uint64("lru cache", rocksDBLRUCacheCapacity)) bbto := gorocksdb.NewDefaultBlockBasedTableOptions() + bbto.SetBlockSize(64 << 10) bbto.SetBlockCache(gorocksdb.NewLRUCache(rocksDBLRUCacheCapacity)) + optsKV := gorocksdb.NewDefaultOptions() + // L0:No Compression + // L1,L2: ZSTD + optsKV.SetNumLevels(3) + optsKV.SetCompressionPerLevel([]gorocksdb.CompressionType{0, 7, 7}) optsKV.SetBlockBasedTableFactory(bbto) + optsKV.SetTargetFileSizeMultiplier(2) optsKV.SetCreateIfMissing(true) // by default there are only 1 thread for flush compaction, which may block each other. // increase to a reasonable thread numbers @@ -174,7 +181,10 @@ func NewRocksMQ(params paramtable.BaseTable, name string, idAllocator allocator. // finish rocks mq store initialization, rocks mq store has to set the prefix extractor optsStore := gorocksdb.NewDefaultOptions() // share block cache with kv + optsKV.SetNumLevels(3) + optsStore.SetCompressionPerLevel([]gorocksdb.CompressionType{0, 7, 7}) optsStore.SetBlockBasedTableFactory(bbto) + optsStore.SetTargetFileSizeMultiplier(2) optsStore.SetCreateIfMissing(true) // by default there are only 1 thread for flush compaction, which may block each other. // increase to a reasonable thread numbers