This is an automated email from the ASF dual-hosted git repository.
yiguolei pushed a commit to branch spill_and_reserve
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/spill_and_reserve by this push:
new 476b9bbc771 [spill](fix) fix reserve memory if
enable_memory_overcommit (#41282)
476b9bbc771 is described below
commit 476b9bbc77142f842c51593d7129f56968c51181
Author: TengJianPing <[email protected]>
AuthorDate: Wed Sep 25 17:25:29 2024 +0800
[spill](fix) fix reserve memory if enable_memory_overcommit (#41282)
## Proposed changes
Issue Number: close #xxx
<!--Describe your changes.-->
---
be/src/runtime/memory/mem_tracker_limiter.h | 12 ++++++++++++
be/src/runtime/memory/thread_mem_tracker_mgr.h | 2 ++
2 files changed, 14 insertions(+)
diff --git a/be/src/runtime/memory/mem_tracker_limiter.h
b/be/src/runtime/memory/mem_tracker_limiter.h
index 80ddde30351..09558c7bddc 100644
--- a/be/src/runtime/memory/mem_tracker_limiter.h
+++ b/be/src/runtime/memory/mem_tracker_limiter.h
@@ -171,6 +171,18 @@ public:
int64_t reserved_consumption() const { return
_reserved_counter.current_value(); }
int64_t reserved_peak_consumption() const { return
_reserved_counter.peak_value(); }
+ void reserve(int64_t bytes) {
+ if (UNLIKELY(bytes == 0)) {
+ return;
+ }
+ _mem_counter.add(bytes);
+ if (_query_statistics) {
+ _query_statistics->set_max_peak_memory_bytes(peak_consumption());
+ _query_statistics->set_current_used_memory_bytes(consumption());
+ }
+ _reserved_counter.add(bytes);
+ }
+
bool try_reserve(int64_t bytes) {
if (UNLIKELY(bytes == 0)) {
return true;
diff --git a/be/src/runtime/memory/thread_mem_tracker_mgr.h
b/be/src/runtime/memory/thread_mem_tracker_mgr.h
index 80b00d32a0b..15a57528491 100644
--- a/be/src/runtime/memory/thread_mem_tracker_mgr.h
+++ b/be/src/runtime/memory/thread_mem_tracker_mgr.h
@@ -296,6 +296,8 @@ inline doris::Status
ThreadMemTrackerMgr::try_reserve(int64_t size) {
size, _limiter_tracker->consumption(),
_limiter_tracker->limit());
return
doris::Status::Error<ErrorCode::QUERY_MEMORY_EXCEEDED>(err_msg);
}
+ } else {
+ _limiter_tracker->reserve(size);
}
if (wg_ptr) {
if (!wg_ptr->add_wg_refresh_interval_memory_growth(size)) {
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]