xinyiZzz commented on code in PR #14712:
URL: https://github.com/apache/doris/pull/14712#discussion_r1041109434
##########
be/src/runtime/memory/mem_tracker_limiter.cpp:
##########
@@ -237,42 +239,69 @@ Status
MemTrackerLimiter::fragment_mem_limit_exceeded(RuntimeState* state, const
return Status::MemoryLimitExceeded(failed_msg);
}
-// TODO(zxy) More observable methods
-// /// Logs the usage of 'limit' number of queries based on maximum total
memory
-// /// consumption.
-// std::string MemTracker::LogTopNQueries(int limit) {
-// if (limit == 0) return "";
-// priority_queue<pair<int64_t, string>, std::vector<pair<int64_t,
string>>,
-// std::greater<pair<int64_t, string>>>
-// min_pq;
-// GetTopNQueries(min_pq, limit);
-// std::vector<string> usage_strings(min_pq.size());
-// while (!min_pq.empty()) {
-// usage_strings.push_back(min_pq.top().second);
-// min_pq.pop();
-// }
-// std::reverse(usage_strings.begin(), usage_strings.end());
-// return join(usage_strings, "\n");
-// }
+void MemTrackerLimiter::free_top_query(int64_t min_free_mem) {
+ std::priority_queue<std::pair<int64_t, std::string>,
+ std::vector<std::pair<int64_t, std::string>>,
+ std::greater<std::pair<int64_t, std::string>>>
+ min_pq;
+ int64_t prepare_free_mem = 0;
-// /// Helper function for LogTopNQueries that iterates through the MemTracker
hierarchy
-// /// and populates 'min_pq' with 'limit' number of elements (that contain
state related
-// /// to query MemTrackers) based on maximum total memory consumption.
-// void MemTracker::GetTopNQueries(
-// priority_queue<pair<int64_t, string>, std::vector<pair<int64_t,
string>>,
-// greater<pair<int64_t, string>>>& min_pq,
-// int limit) {
-// list<weak_ptr<MemTracker>> children;
-// {
-// lock_guard<SpinLock> l(child_trackers_lock_);
-// children = child_trackers_;
-// }
-// for (const auto& child_weak : children) {
-// shared_ptr<MemTracker> child = child_weak.lock();
-// if (child) {
-// child->GetTopNQueries(min_pq, limit);
-// }
-// }
-// }
+ auto label_to_queryid = [&](const std::string& label) -> TUniqueId {
+ auto queryid = split(label, "#Id=")[1];
+ TUniqueId querytid;
+ parse_id(queryid, &querytid);
+ return querytid;
+ };
+
+ Defer defer {[&]() {
+ std::vector<std::string> usage_strings;
+ bool had_cancel = false;
Review Comment:
fix, use lambda instead
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]