xinyiZzz commented on code in PR #50107:
URL: https://github.com/apache/doris/pull/50107#discussion_r2051919549


##########
be/src/runtime/workload_group/workload_group_manager.cpp:
##########
@@ -652,87 +656,88 @@ int64_t 
WorkloadGroupMgr::flush_memtable_from_current_group_(WorkloadGroupPtr wg
     return 0;
 }
 
-int64_t 
WorkloadGroupMgr::revoke_memory_from_other_group_(std::shared_ptr<QueryContext> 
requestor,
-                                                          bool hard_limit, 
int64_t need_free_mem) {
-    int64_t total_freed_mem = 0;
-    std::unique_ptr<RuntimeProfile> profile = 
std::make_unique<RuntimeProfile>("RevokeMemory");
-    // 1. memtable like memory
-    // 2. query exceed workload group limit
-    int64_t freed_mem = revoke_overcommited_memory_(requestor, need_free_mem, 
profile.get());
-    total_freed_mem += freed_mem;
-    // The revoke process may kill current requestor, so should return now.
-    if (need_free_mem - total_freed_mem < 0 || requestor->is_cancelled()) {
-        return total_freed_mem;
-    }
-    // TODO, remove cancel_top_query_in_overcommit_group_, in 
`revoke_overcommited_memory_` already include
-    //       "cancel top query".
-    // if (hard_limit) {
-    //     freed_mem = cancel_top_query_in_overcommit_group_(need_free_mem - 
total_freed_mem,
-    //                                                       
doris::QUERY_MIN_MEMORY, profile.get());
-    // } else {
-    //     freed_mem = cancel_top_query_in_overcommit_group_(
-    //             need_free_mem - total_freed_mem, 
requestor->get_mem_tracker()->consumption(),
-    //             profile.get());
-    // }
-    // total_freed_mem += freed_mem;
-    // // The revoke process may kill current requestor, so should return now.
-    // if (need_free_mem - total_freed_mem < 0 || requestor->is_cancelled()) {
-    //     return total_freed_mem;
-    // }
-    return total_freed_mem;
-}
-
 // Revoke memory from workload group that exceed it's limit. For example, if 
the wg's limit is 10g, but used 12g
 // then should revoke 2g from the group.
-int64_t 
WorkloadGroupMgr::revoke_overcommited_memory_(std::shared_ptr<QueryContext> 
requestor,
-                                                      int64_t need_free_mem,
-                                                      RuntimeProfile* profile) 
{
-    int64_t total_freed_mem = 0;
-    // 1. check memtable usage, and try to free them.
-    int64_t freed_mem = 
revoke_memtable_from_overcommited_groups_(need_free_mem, profile);
-    total_freed_mem += freed_mem;
-    // The revoke process may kill current requestor, so should return now.
-    if (need_free_mem - total_freed_mem < 0 || requestor->is_cancelled()) {
-        return total_freed_mem;
-    }
-    // 2. Cancel top usage query, one by one
+int64_t WorkloadGroupMgr::revoke_memory_from_other_overcommited_groups_(
+        std::shared_ptr<ResourceContext> requestor, int64_t need_free_mem) {
+    int64_t freed_mem = 0;
+    MonotonicStopWatch watch;
+    watch.start();
+    std::unique_ptr<RuntimeProfile> profile =
+            
std::make_unique<RuntimeProfile>("RevokeMemoryFromOtherOvercommitedGroups");
+
     using WorkloadGroupMem = std::pair<WorkloadGroupPtr, int64_t>;
     auto cmp = [](WorkloadGroupMem left, WorkloadGroupMem right) {
         return left.second < right.second;
     };
-    std::priority_queue<WorkloadGroupMem, std::vector<WorkloadGroupMem>, 
decltype(cmp)> heap(cmp);
+    std::priority_queue<WorkloadGroupMem, std::vector<WorkloadGroupMem>, 
decltype(cmp)>
+            exceeded_memory_heap(cmp);
+    int64_t total_exceeded_memory = 0;
     {
         std::shared_lock<std::shared_mutex> r_lock(_group_mutex);
-        for (auto iter = _workload_groups.begin(); iter != 
_workload_groups.end(); iter++) {
+        for (auto& _workload_group : _workload_groups) {

Review Comment:
   done
   gpt自己改的,还是不行啊。。



-- 
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: commits-unsubscr...@doris.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


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

Reply via email to