This is an automated email from the ASF dual-hosted git repository.
yiguolei pushed a commit to branch branch-1.1-lts
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/branch-1.1-lts by this push:
new 7bdbe1b53e [branch-1.1-lts](memtracker) enable_cancel_query support
old mem tracker #13092
7bdbe1b53e is described below
commit 7bdbe1b53e96c331122192ac472e93afb27c3f54
Author: Xinyi Zou <[email protected]>
AuthorDate: Fri Sep 30 18:10:58 2022 +0800
[branch-1.1-lts](memtracker) enable_cancel_query support old mem tracker
#13092
---
be/src/common/config.h | 2 +-
be/src/runtime/mem_tracker.h | 12 ++++++------
be/src/runtime/runtime_state.cpp | 2 +-
3 files changed, 8 insertions(+), 8 deletions(-)
diff --git a/be/src/common/config.h b/be/src/common/config.h
index 2ea2eb10b2..8e91db663a 100644
--- a/be/src/common/config.h
+++ b/be/src/common/config.h
@@ -68,7 +68,7 @@ CONF_Int64(tc_max_total_thread_cache_bytes, "1073741824");
// defaults to bytes if no unit is given"
// must larger than 0. and if larger than physical memory size,
// it will be set to physical memory size.
-CONF_String(mem_limit, "90%");
+CONF_String(mem_limit, "80%");
// the port heartbeat service used
CONF_Int32(heartbeat_service_port, "9050");
diff --git a/be/src/runtime/mem_tracker.h b/be/src/runtime/mem_tracker.h
index d3808cdddb..a8d7a7f146 100644
--- a/be/src/runtime/mem_tracker.h
+++ b/be/src/runtime/mem_tracker.h
@@ -173,7 +173,7 @@ public:
// This is independent of the consumption value of the mem tracker,
which counts the virtual memory
// of the process malloc.
// for fast, expect MemInfo::initialized() to be true.
- if (PerfCounters::get_vm_rss() + bytes >= MemInfo::mem_limit()) {
+ if (PerfCounters::get_vm_rss() + bytes >= MemInfo::mem_limit() &&
config::enable_cancel_query) {
return Status::MemoryLimitExceeded(fmt::format(
"{}: TryConsume failed, bytes={} process whole
consumption={} mem limit={}",
label_, bytes, MemInfo::current_mem(),
MemInfo::mem_limit()));
@@ -186,7 +186,7 @@ public:
for (i = all_trackers_.size() - 1; i >= 0; --i) {
MemTracker* tracker = all_trackers_[i];
const int64_t limit = tracker->GetLimit(mode);
- if (limit < 0) {
+ if (limit < 0 || !config::enable_cancel_query) {
tracker->consumption_->add(bytes); // No limit at this tracker.
} else {
// If TryConsume fails, we can try to GC, but we may need to
try several times if
@@ -262,7 +262,7 @@ public:
/// exceeded.
bool AnyLimitExceeded(MemLimit mode) {
for (const auto& tracker : limit_trackers_) {
- if (tracker->LimitExceeded(mode)) {
+ if (tracker->LimitExceeded(mode) && config::enable_cancel_query) {
return true;
}
}
@@ -281,7 +281,7 @@ public:
// Return limit exceeded tracker or null
MemTracker* find_limit_exceeded_tracker() {
for (const auto& tracker : limit_trackers_) {
- if (tracker->limit_exceeded()) {
+ if (tracker->limit_exceeded() && config::enable_cancel_query) {
return tracker;
}
}
@@ -298,7 +298,7 @@ public:
void RefreshConsumptionFromMetric();
// TODO(yingchun): following functions are old style which have no
MemLimit parameter
- bool limit_exceeded() const { return limit_ >= 0 && limit_ <
consumption(); }
+ bool limit_exceeded() const { return limit_ >= 0 && limit_ < consumption()
&& config::enable_cancel_query; }
int64_t limit() const { return limit_; }
bool has_limit() const { return limit_ >= 0; }
@@ -396,7 +396,7 @@ public:
static bool limit_exceeded(const std::vector<std::shared_ptr<MemTracker>>&
trackers) {
for (const auto& tracker : trackers) {
- if (tracker->limit_exceeded()) {
+ if (tracker->limit_exceeded() && config::enable_cancel_query) {
// TODO: remove logging
LOG(WARNING) << "exceeded limit: limit=" << tracker->limit()
<< " consumption=" << tracker->consumption();
diff --git a/be/src/runtime/runtime_state.cpp b/be/src/runtime/runtime_state.cpp
index 6040718a33..864564e18b 100644
--- a/be/src/runtime/runtime_state.cpp
+++ b/be/src/runtime/runtime_state.cpp
@@ -322,7 +322,7 @@ Status RuntimeState::set_mem_limit_exceeded(const
std::string& msg) {
Status RuntimeState::check_query_state(const std::string& msg) {
// TODO: it would be nice if this also checked for cancellation, but doing
so breaks
// cases where we use Status::Cancelled("Cancelled") to indicate that the
limit was reached.
- RETURN_IF_LIMIT_EXCEEDED(this, msg);
+ if (config::enable_cancel_query) RETURN_IF_LIMIT_EXCEEDED(this, msg);
return query_status();
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]