You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@doris.apache.org by mo...@apache.org on 2022/07/01 08:05:54 UTC

[doris] branch master updated: [improvement] alloc aligned memory for block bloom filter to work with jemalloc (#10446)

This is an automated email from the ASF dual-hosted git repository.

morningman pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/master by this push:
     new 5dd43fff53 [improvement] alloc aligned memory for block bloom filter to work with jemalloc (#10446)
5dd43fff53 is described below

commit 5dd43fff53c207d628b77df4b6ddc10403ac4e02
Author: Yongqiang YANG <98...@users.noreply.github.com>
AuthorDate: Fri Jul 1 16:05:48 2022 +0800

    [improvement] alloc aligned memory for block bloom filter to work with jemalloc (#10446)
---
 be/src/exprs/block_bloom_filter.hpp     | 2 --
 be/src/exprs/block_bloom_filter_impl.cc | 9 +++++++--
 2 files changed, 7 insertions(+), 4 deletions(-)

diff --git a/be/src/exprs/block_bloom_filter.hpp b/be/src/exprs/block_bloom_filter.hpp
index e1d64013af..b75350b56e 100644
--- a/be/src/exprs/block_bloom_filter.hpp
+++ b/be/src/exprs/block_bloom_filter.hpp
@@ -202,8 +202,6 @@ private:
     }
 
     DISALLOW_COPY_AND_ASSIGN(BlockBloomFilter);
-
-    std::unique_ptr<char[]> _mem_holder;
 };
 
 } // namespace doris
diff --git a/be/src/exprs/block_bloom_filter_impl.cc b/be/src/exprs/block_bloom_filter_impl.cc
index c8cf9b049b..1cdab38605 100644
--- a/be/src/exprs/block_bloom_filter_impl.cc
+++ b/be/src/exprs/block_bloom_filter_impl.cc
@@ -69,8 +69,12 @@ Status BlockBloomFilter::init_internal(const int log_space_bytes, uint32_t hash_
 
     const size_t alloc_size = directory_size();
     close(); // Ensure that any previously allocated memory for directory_ is released.
-    _mem_holder.reset(new char[alloc_size]);
-    _directory = (Bucket*)_mem_holder.get();
+    DCHECK(_directory == nullptr);
+    int rc = posix_memalign((void**)&_directory, 32, alloc_size);
+    if (rc != 0) {
+        return Status::InternalError("block_bloom_filter alloc fail");
+    }
+
     _hash_seed = hash_seed;
     return Status::OK();
 }
@@ -100,6 +104,7 @@ Status BlockBloomFilter::init_from_directory(int log_space_bytes, const Slice& d
 
 void BlockBloomFilter::close() {
     if (_directory != nullptr) {
+        free(_directory);
         _directory = nullptr;
     }
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@doris.apache.org
For additional commands, e-mail: commits-help@doris.apache.org