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

   ### What problem does this PR solve?
   
   Issue Number: None
   
   Related PR: #67636
   
   Problem Summary: CloudReplica image deserialization created independent 
String cluster IDs and boxed Long backend IDs for equivalent routes. The tested 
production image contains 4,197,906 replicas and 62,708,955 routes but only 15 
cluster IDs and about 85 backend IDs, so millions of equal route identifiers 
retained duplicate heap objects. Canonical sharing reduced forced-GC live heap 
from 15,311,045,744 bytes to 8,539,550,968 bytes, saving 6,771,494,776 bytes 
(6.31 GiB, 44.2%).
   
   Intern cluster IDs and primary backend IDs on route updates and after image 
deserialization so equal routes reuse the same objects. Use Guava weak 
interners instead of strong process-lifetime maps: active routes keep canonical 
objects alive, while identifiers become collectable after their last route is 
removed. Routing behavior and the serialized image format are unchanged.
   
   The full 6.93 GB image completed compatibility load and dump with the final 
weak-interner implementation. A clean run loaded in 225.679 seconds and dumped 
in 145.935 seconds. JFR attributed 255 of 18,139 load-stage CPU samples (1.41%) 
to the interner path, with no sampled allocations attributed directly to it.
   
   ### Release note
   
   Reduce FE heap usage for CloudReplica routing metadata and release unused 
historical route identifiers.
   
   ### Check List (For Author)
   
   - Test: Unit Test / Manual test
       - CloudReplicaTest: 23 tests passed
       - ./build.sh --fe passed with Checkstyle 0 violations
       - Full production image compatibility load and dump passed
       - JFR profile verified the interner path is not a load hotspot
   - Behavior changed: Yes; equal in-memory route identifiers are shared and 
unused canonical identifiers can be reclaimed, without changing routing results 
or image serialization
   - Does this need documentation: No
   
   ### What problem does this PR solve?
   
   Issue Number: close #xxx
   
   Related PR: #xxx
   
   Problem Summary:
   
   ### 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