You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@doris.apache.org by yi...@apache.org on 2022/10/09 08:20:06 UTC
[doris] branch master updated: [chore](be config) remove config use_mmap_allocate_chunk #13196
This is an automated email from the ASF dual-hosted git repository.
yiguolei 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 dc2d33298b [chore](be config) remove config use_mmap_allocate_chunk #13196
dc2d33298b is described below
commit dc2d33298b225489033f547d1bb6d15c6daf0e1b
Author: yiguolei <67...@qq.com>
AuthorDate: Sun Oct 9 16:19:59 2022 +0800
[chore](be config) remove config use_mmap_allocate_chunk #13196
This config is never used online and there exist bugs if enable this config. So that I remove this config and related tests.
Co-authored-by: yiguolei <yi...@gmail.com>
---
be/src/common/config.h | 8 ------
be/src/runtime/memory/system_allocator.cpp | 33 ++----------------------
be/test/runtime/memory/chunk_allocator_test.cpp | 1 -
be/test/runtime/memory/system_allocator_test.cpp | 5 +---
docs/en/docs/admin-manual/config/be-config.md | 6 -----
docs/zh-CN/docs/admin-manual/config/be-config.md | 6 -----
6 files changed, 3 insertions(+), 56 deletions(-)
diff --git a/be/src/common/config.h b/be/src/common/config.h
index 80e821c536..e0baed3da4 100644
--- a/be/src/common/config.h
+++ b/be/src/common/config.h
@@ -437,14 +437,6 @@ CONF_Int32(max_free_io_buffers, "128");
// including MemPool, ChunkAllocator, BufferPool, DiskIO free buffer.
CONF_Bool(disable_mem_pools, "false");
-// Whether to allocate chunk using mmap. If you enable this, you'd better to
-// increase vm.max_map_count's value whose default value is 65530.
-// you can do it as root via "sysctl -w vm.max_map_count=262144" or
-// "echo 262144 > /proc/sys/vm/max_map_count"
-// NOTE: When this is set to true, you must set chunk_reserved_bytes_limit
-// to a relative large number or the performance is very very bad.
-CONF_Bool(use_mmap_allocate_chunk, "false");
-
// The reserved bytes limit of Chunk Allocator, usually set as a percentage of mem_limit.
// defaults to bytes if no unit is given, the number of bytes must be a multiple of 2.
// must larger than 0. and if larger than physical memory size, it will be set to physical memory size.
diff --git a/be/src/runtime/memory/system_allocator.cpp b/be/src/runtime/memory/system_allocator.cpp
index c05c28861b..fe268ec8d3 100644
--- a/be/src/runtime/memory/system_allocator.cpp
+++ b/be/src/runtime/memory/system_allocator.cpp
@@ -30,26 +30,11 @@ namespace doris {
#define PAGE_SIZE (4 * 1024) // 4K
uint8_t* SystemAllocator::allocate(size_t length) {
- if (config::use_mmap_allocate_chunk) {
- return allocate_via_mmap(length);
- } else {
- return allocate_via_malloc(length);
- }
+ return allocate_via_malloc(length);
}
void SystemAllocator::free(uint8_t* ptr, size_t length) {
- if (config::use_mmap_allocate_chunk) {
- auto res = munmap(ptr, length);
- if (res != 0) {
- char buf[64];
- LOG(ERROR) << "fail to free memory via munmap, errno=" << errno
- << ", errmsg=" << strerror_r(errno, buf, 64);
- } else {
- RELEASE_THREAD_MEM_TRACKER(length);
- }
- } else {
- ::free(ptr);
- }
+ ::free(ptr);
}
uint8_t* SystemAllocator::allocate_via_malloc(size_t length) {
@@ -65,18 +50,4 @@ uint8_t* SystemAllocator::allocate_via_malloc(size_t length) {
return (uint8_t*)ptr;
}
-uint8_t* SystemAllocator::allocate_via_mmap(size_t length) {
- CONSUME_THREAD_MEM_TRACKER(length);
- auto ptr = (uint8_t*)mmap(nullptr, length, PROT_READ | PROT_WRITE, MAP_ANONYMOUS | MAP_PRIVATE,
- -1, 0);
- if (ptr == MAP_FAILED) {
- char buf[64];
- LOG(ERROR) << "fail to allocate memory via mmap, errno=" << errno
- << ", errmsg=" << strerror_r(errno, buf, 64);
- RELEASE_THREAD_MEM_TRACKER(length);
- return nullptr;
- }
- return ptr;
-}
-
} // namespace doris
diff --git a/be/test/runtime/memory/chunk_allocator_test.cpp b/be/test/runtime/memory/chunk_allocator_test.cpp
index aaf3d91b13..b3854724eb 100644
--- a/be/test/runtime/memory/chunk_allocator_test.cpp
+++ b/be/test/runtime/memory/chunk_allocator_test.cpp
@@ -28,7 +28,6 @@
namespace doris {
TEST(ChunkAllocatorTest, Normal) {
- config::use_mmap_allocate_chunk = true;
for (size_t size = 4096; size <= 1024 * 1024; size <<= 1) {
Chunk chunk;
EXPECT_TRUE(ChunkAllocator::instance()->allocate(size, &chunk).ok());
diff --git a/be/test/runtime/memory/system_allocator_test.cpp b/be/test/runtime/memory/system_allocator_test.cpp
index 3d7a471aa5..6a155ce052 100644
--- a/be/test/runtime/memory/system_allocator_test.cpp
+++ b/be/test/runtime/memory/system_allocator_test.cpp
@@ -23,9 +23,7 @@
namespace doris {
-template <bool use_mmap>
void test_normal() {
- config::use_mmap_allocate_chunk = use_mmap;
{
auto ptr = SystemAllocator::allocate(4096);
EXPECT_NE(nullptr, ptr);
@@ -41,8 +39,7 @@ void test_normal() {
}
TEST(SystemAllocatorTest, TestNormal) {
- test_normal<true>();
- test_normal<false>();
+ test_normal();
}
} // namespace doris
diff --git a/docs/en/docs/admin-manual/config/be-config.md b/docs/en/docs/admin-manual/config/be-config.md
index cdabd0fa67..d8fa6a11fa 100644
--- a/docs/en/docs/admin-manual/config/be-config.md
+++ b/docs/en/docs/admin-manual/config/be-config.md
@@ -1454,12 +1454,6 @@ Default: 1
Maximum number of threads for uploading files
-### `use_mmap_allocate_chunk`
-
-Default: false
-
-Whether to use mmap to allocate blocks. If you enable this feature, it is best to increase the value of vm.max_map_count, its default value is 65530. You can use "sysctl -w vm.max_map_count=262144" or "echo 262144> /proc/sys/vm/" to operate max_map_count as root. When this setting is true, you must set chunk_reserved_bytes_limit to a relatively low Big number, otherwise the performance is very very bad
-
### `user_function_dir`
${DORIS_HOME}/lib/udf
diff --git a/docs/zh-CN/docs/admin-manual/config/be-config.md b/docs/zh-CN/docs/admin-manual/config/be-config.md
index 13f62274be..758b93bc91 100644
--- a/docs/zh-CN/docs/admin-manual/config/be-config.md
+++ b/docs/zh-CN/docs/admin-manual/config/be-config.md
@@ -1477,12 +1477,6 @@ txn_lock 分片大小,取值为2^n,n=0,1,2,3,4, 这是一项增强功能
上传文件最大线程数
-### `use_mmap_allocate_chunk`
-
-默认值:false
-
-是否使用 mmap 分配块。 如果启用此功能,最好增加 vm.max_map_count 的值,其默认值为 65530。您可以通过“sysctl -w vm.max_map_count=262144”或“echo 262144 > /proc/sys/vm/”以 root 身份进行操作 max_map_count" ,当这个设置为true时,你必须将chunk_reserved_bytes_limit设置为一个相对较大的数字,否则性能非常非常糟糕。
-
### `user_function_dir`
默认值:${DORIS_HOME}/lib/udf
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@doris.apache.org
For additional commands, e-mail: commits-help@doris.apache.org