This is an automated email from the ASF dual-hosted git repository.

maobaolong pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-uniffle.git


The following commit(s) were added to refs/heads/master by this push:
     new 78cb21bf1 [MINOR] improvement(server): Dynamic conf support of server 
memory watermark (#2231)
78cb21bf1 is described below

commit 78cb21bf10b41ce7e023597a3386b939c1c0f80e
Author: maobaolong <[email protected]>
AuthorDate: Tue Nov 5 15:43:11 2024 +0800

    [MINOR] improvement(server): Dynamic conf support of server memory 
watermark (#2231)
    
    ### What changes were proposed in this pull request?
    
    ### Why are the changes needed?
    
    It can be easy to tune the server online without restart leverage this.
    
    ### Does this PR introduce _any_ user-facing change?
    
    No.
    
    ### How was this patch tested?
    
    Tested Locally.
    
    ```Console
    ➜  ~ curl -X POST http://localhost:19948/api/shuffleServer/confOps/update \
    -H "Content-Type: application/json" \
    -d '{"update":{"rss.server.memory.shuffle.highWaterMark.percentage": "0.5", 
"rss.server.memory.shuffle.lowWaterMark.percentage": "0.1"}}'
    
    temporarily effective until restart: Update successfully
    ```
    
    server.log
    
    ```
    [2024-11-03 21:29:20.660] [Jetty-5] [INFO] ConfOpsResource - Dynamic 
updating ConfVO{update={rss.server.memory.shuffle.highWaterMark.percentage=0.5, 
rss.server.memory.shuffle.lowWaterMark.percentage=0.1}, delete=[]}
    ```
    
    <img width="1116" alt="snapshot_b6b93cf5-bf97-4efb-9f20-f106c9278b27" 
src="https://github.com/user-attachments/assets/f2d03ac3-16a9-4927-8fe9-12e44a7fa231";>
---
 .../server/buffer/ShuffleBufferManager.java        | 28 ++++++++++++++++++++++
 1 file changed, 28 insertions(+)

diff --git 
a/server/src/main/java/org/apache/uniffle/server/buffer/ShuffleBufferManager.java
 
b/server/src/main/java/org/apache/uniffle/server/buffer/ShuffleBufferManager.java
index b4c9b9ef3..7d7b98ac9 100644
--- 
a/server/src/main/java/org/apache/uniffle/server/buffer/ShuffleBufferManager.java
+++ 
b/server/src/main/java/org/apache/uniffle/server/buffer/ShuffleBufferManager.java
@@ -40,6 +40,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import org.apache.uniffle.common.ReconfigurableConfManager;
+import org.apache.uniffle.common.ReconfigurableRegistry;
 import org.apache.uniffle.common.ShuffleDataResult;
 import org.apache.uniffle.common.ShufflePartitionedData;
 import org.apache.uniffle.common.rpc.StatusCode;
@@ -176,6 +177,33 @@ public class ShuffleBufferManager {
     ShuffleServerMetrics.addLabeledGauge(
         SHUFFLE_COUNT_IN_BUFFER_POOL,
         () -> bufferPool.values().stream().mapToLong(innerMap -> 
innerMap.size()).sum());
+    ReconfigurableRegistry.register(
+        Sets.newHashSet(
+            
ShuffleServerConf.SERVER_MEMORY_SHUFFLE_HIGHWATERMARK_PERCENTAGE.key(),
+            
ShuffleServerConf.SERVER_MEMORY_SHUFFLE_LOWWATERMARK_PERCENTAGE.key()),
+        (theConf, changedProperties) -> {
+          if (changedProperties == null) {
+            return;
+          }
+          if (changedProperties.contains(
+              
ShuffleServerConf.SERVER_MEMORY_SHUFFLE_HIGHWATERMARK_PERCENTAGE.key())) {
+            this.highWaterMark =
+                (long)
+                    (capacity
+                        / 100.0
+                        * conf.get(
+                            
ShuffleServerConf.SERVER_MEMORY_SHUFFLE_HIGHWATERMARK_PERCENTAGE));
+          }
+          if (changedProperties.contains(
+              
ShuffleServerConf.SERVER_MEMORY_SHUFFLE_LOWWATERMARK_PERCENTAGE.key())) {
+            this.lowWaterMark =
+                (long)
+                    (capacity
+                        / 100.0
+                        * conf.get(
+                            
ShuffleServerConf.SERVER_MEMORY_SHUFFLE_LOWWATERMARK_PERCENTAGE));
+          }
+        });
   }
 
   public void setShuffleTaskManager(ShuffleTaskManager taskManager) {

Reply via email to