Gabriel39 opened a new pull request, #62273:
URL: https://github.com/apache/doris/pull/62273

   ### What problem does this PR solve?
   
   This commit extends the memory-aware adaptive scheduling framework from scan 
operators to local exchange operators, enabling unified memory control across 
the query pipeline.                                                   
                                                                                
                                                                                
                                                                      
     Key changes:                                                               
                                                                                
                                                                      
                                                                                
                                                                                
                                                                      
     1. Generalized memory arbitration: Renamed MemShareArbitrator methods from 
scan-specific (register_scan_node, DEFAULT_SCANNER_MEM_BYTES) to generic 
operator terminology (register_operator, DEFAULT_BLOCK_MEM_BYTES), allowing  
     both scan and exchange operators to share the same memory arbitration 
mechanism.
     2. New AdaptiveTaskProcessor: Added a new struct that manages dynamic task 
concurrency adjustment based on memory limits. It tracks blocking dependencies 
and can throttle parallelism when memory pressure is high.
     3. Refactored MemLimiter:
       - Made internal fields private with proper encapsulation
       - Added init() and close() lifecycle methods
       - Renamed available_scanner_count() to empty_task_slots() for generality
       - Integrated with MemShareArbitrator via constructor injection
     4. Local exchange memory tracking: Modified BlockWrapper to track which 
sink instance created it (_sink_ins_idx), enabling per-instance memory 
accounting in LocalExchangeSharedState. This allows the memory limiter to 
properly
      attribute memory usage to specific pipeline instances.
     5. Simplified ScannerContext: Removed redundant memory management code 
from ScannerContext since it now delegates to the shared MemLimiter and 
AdaptiveTaskProcessor infrastructure.
     6. Updated unit tests: Fixed scanner_context_test.cpp to use the new API 
signatures and removed tests that accessed now-private members.
   
   
   ### Release note
   
   None
   
   ### Check List (For Author)
   
   - Test <!-- At least one of them must be included. -->
       - [ ] Regression test
       - [ ] Unit Test
       - [ ] Manual test (add detailed scripts or steps below)
       - [ ] No need to test or manual test. Explain why:
           - [ ] This is a refactor/code format and no logic has been changed.
           - [ ] Previous test can cover this change.
           - [ ] No code files have been changed.
           - [ ] Other reason <!-- Add your reason?  -->
   
   - Behavior changed:
       - [ ] No.
       - [ ] Yes. <!-- Explain the behavior change -->
   
   - Does this need documentation?
       - [ ] No.
       - [ ] Yes. <!-- Add document PR link here. eg: 
https://github.com/apache/doris-website/pull/1214 -->
   
   ### Check List (For Reviewer who merge this PR)
   
   - [ ] Confirm the release note
   - [ ] Confirm test cases
   - [ ] Confirm document
   - [ ] Add branch pick label <!-- Add branch pick label that this PR should 
merge into -->
   
   


-- 
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]

Reply via email to