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

linlin pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/pulsar.git


The following commit(s) were added to refs/heads/master by this push:
     new 939d065c9da [fix][broker] Remove useless load balancer items about 
MemoryResourceWeight (#19559)
939d065c9da is described below

commit 939d065c9daeb5dced020ad838751b817dee022c
Author: feynmanlin <[email protected]>
AuthorDate: Sun Feb 26 11:56:13 2023 +0800

    [fix][broker] Remove useless load balancer items about MemoryResourceWeight 
(#19559)
    
    Motivation
    Even for a Broker with a very low load, its memory will grow slowly until 
GC is triggered. If memory is used as a load calculation item, the Bundle will 
be unloaded by mistake
    
    Modifications
    Remove memory as load calculation item
---
 conf/broker.conf                                                 | 9 +++++----
 .../main/java/org/apache/pulsar/broker/ServiceConfiguration.java | 4 +++-
 .../broker/loadbalance/impl/LeastResourceUsageWithWeight.java    | 1 -
 .../apache/pulsar/broker/loadbalance/impl/ThresholdShedder.java  | 2 +-
 .../pulsar/policies/data/loadbalancer/LocalBrokerData.java       | 9 ++++++++-
 .../pulsar/policies/data/loadbalancer/LocalBrokerDataTest.java   | 8 +++-----
 6 files changed, 20 insertions(+), 13 deletions(-)

diff --git a/conf/broker.conf b/conf/broker.conf
index f64d08a1de8..3183c83a837 100644
--- a/conf/broker.conf
+++ b/conf/broker.conf
@@ -1355,10 +1355,6 @@ loadBalancerBandwithOutResourceWeight=1.0
 # It only takes effect in the ThresholdShedder strategy.
 loadBalancerCPUResourceWeight=1.0
 
-# The heap memory usage weight when calculating new resource usage.
-# It only takes effect in the ThresholdShedder strategy.
-loadBalancerMemoryResourceWeight=1.0
-
 # The direct memory usage weight when calculating new resource usage.
 # It only takes effect in the ThresholdShedder strategy.
 loadBalancerDirectMemoryResourceWeight=1.0
@@ -1669,6 +1665,11 @@ strictBookieAffinityEnabled=false
 
 # These settings are left here for compatibility
 
+# The heap memory usage weight when calculating new resource usage.
+# It only takes effect in the ThresholdShedder strategy.
+# Deprecated: Memory is no longer used as a load balancing item
+loadBalancerMemoryResourceWeight=1.0
+
 # Zookeeper quorum connection string
 # Deprecated: use metadataStoreUrl instead
 zookeeperServers=
diff --git 
a/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/ServiceConfiguration.java
 
b/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/ServiceConfiguration.java
index 4f2c8e72e13..5a85be11745 100644
--- 
a/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/ServiceConfiguration.java
+++ 
b/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/ServiceConfiguration.java
@@ -2341,10 +2341,12 @@ public class ServiceConfiguration implements 
PulsarConfiguration {
     )
     private double loadBalancerCPUResourceWeight = 1.0;
 
+    @Deprecated(since = "3.0.0")
     @FieldContext(
             dynamic = true,
             category = CATEGORY_LOAD_BALANCER,
-            doc = "Memory Resource Usage Weight"
+            doc = "Memory Resource Usage Weight. Deprecated: Memory is no 
longer used as a load balancing item.",
+            deprecated = true
     )
     private double loadBalancerMemoryResourceWeight = 1.0;
 
diff --git 
a/pulsar-broker/src/main/java/org/apache/pulsar/broker/loadbalance/impl/LeastResourceUsageWithWeight.java
 
b/pulsar-broker/src/main/java/org/apache/pulsar/broker/loadbalance/impl/LeastResourceUsageWithWeight.java
index 35dd7282101..f50f9ed3653 100644
--- 
a/pulsar-broker/src/main/java/org/apache/pulsar/broker/loadbalance/impl/LeastResourceUsageWithWeight.java
+++ 
b/pulsar-broker/src/main/java/org/apache/pulsar/broker/loadbalance/impl/LeastResourceUsageWithWeight.java
@@ -98,7 +98,6 @@ public class LeastResourceUsageWithWeight implements 
ModularLoadManagerStrategy
         }
         double resourceUsage = 
brokerData.getLocalData().getMaxResourceUsageWithWeight(
                 conf.getLoadBalancerCPUResourceWeight(),
-                conf.getLoadBalancerMemoryResourceWeight(),
                 conf.getLoadBalancerDirectMemoryResourceWeight(),
                 conf.getLoadBalancerBandwithInResourceWeight(),
                 conf.getLoadBalancerBandwithOutResourceWeight());
diff --git 
a/pulsar-broker/src/main/java/org/apache/pulsar/broker/loadbalance/impl/ThresholdShedder.java
 
b/pulsar-broker/src/main/java/org/apache/pulsar/broker/loadbalance/impl/ThresholdShedder.java
index c75c9c8a317..e2f1a7808fe 100644
--- 
a/pulsar-broker/src/main/java/org/apache/pulsar/broker/loadbalance/impl/ThresholdShedder.java
+++ 
b/pulsar-broker/src/main/java/org/apache/pulsar/broker/loadbalance/impl/ThresholdShedder.java
@@ -168,7 +168,7 @@ public class ThresholdShedder implements 
LoadSheddingStrategy {
                 brokerAvgResourceUsage.get(broker);
         double resourceUsage = localBrokerData.getMaxResourceUsageWithWeight(
                 conf.getLoadBalancerCPUResourceWeight(),
-                conf.getLoadBalancerMemoryResourceWeight(), 
conf.getLoadBalancerDirectMemoryResourceWeight(),
+                conf.getLoadBalancerDirectMemoryResourceWeight(),
                 conf.getLoadBalancerBandwithInResourceWeight(),
                 conf.getLoadBalancerBandwithOutResourceWeight());
         historyUsage = historyUsage == null
diff --git 
a/pulsar-common/src/main/java/org/apache/pulsar/policies/data/loadbalancer/LocalBrokerData.java
 
b/pulsar-common/src/main/java/org/apache/pulsar/policies/data/loadbalancer/LocalBrokerData.java
index 030ecc63be5..8c0c008e0a5 100644
--- 
a/pulsar-common/src/main/java/org/apache/pulsar/policies/data/loadbalancer/LocalBrokerData.java
+++ 
b/pulsar-common/src/main/java/org/apache/pulsar/policies/data/loadbalancer/LocalBrokerData.java
@@ -249,7 +249,7 @@ public class LocalBrokerData implements LoadManagerReport {
                 cpu.percentUsage(), memory.percentUsage(), 
directMemory.percentUsage(), bandwidthIn.percentUsage(),
                 bandwidthOut.percentUsage());
     }
-
+    @Deprecated
     public double getMaxResourceUsageWithWeight(final double cpuWeight, final 
double memoryWeight,
                                                 final double 
directMemoryWeight, final double bandwidthInWeight,
                                                 final double 
bandwidthOutWeight) {
@@ -257,6 +257,13 @@ public class LocalBrokerData implements LoadManagerReport {
                 directMemory.percentUsage() * directMemoryWeight, 
bandwidthIn.percentUsage() * bandwidthInWeight,
                 bandwidthOut.percentUsage() * bandwidthOutWeight) / 100;
     }
+    public double getMaxResourceUsageWithWeight(final double cpuWeight,
+                                                final double 
directMemoryWeight, final double bandwidthInWeight,
+                                                final double 
bandwidthOutWeight) {
+        return max(cpu.percentUsage() * cpuWeight,
+                directMemory.percentUsage() * directMemoryWeight, 
bandwidthIn.percentUsage() * bandwidthInWeight,
+                bandwidthOut.percentUsage() * bandwidthOutWeight) / 100;
+    }
 
     public static double max(double... args) {
         double max = Double.NEGATIVE_INFINITY;
diff --git 
a/pulsar-common/src/test/java/org/apache/pulsar/policies/data/loadbalancer/LocalBrokerDataTest.java
 
b/pulsar-common/src/test/java/org/apache/pulsar/policies/data/loadbalancer/LocalBrokerDataTest.java
index a95f019234c..db55ecfe503 100644
--- 
a/pulsar-common/src/test/java/org/apache/pulsar/policies/data/loadbalancer/LocalBrokerDataTest.java
+++ 
b/pulsar-common/src/test/java/org/apache/pulsar/policies/data/loadbalancer/LocalBrokerDataTest.java
@@ -43,7 +43,6 @@ public class LocalBrokerDataTest {
     public void testMaxResourceUsage() {
         LocalBrokerData data = new LocalBrokerData();
         data.setCpu(new ResourceUsage(1.0, 100.0));
-        data.setMemory(new ResourceUsage(800.0, 200.0));
         data.setDirectMemory(new ResourceUsage(2.0, 100.0));
         data.setBandwidthIn(new ResourceUsage(3.0, 100.0));
         data.setBandwidthOut(new ResourceUsage(4.0, 100.0));
@@ -51,11 +50,10 @@ public class LocalBrokerDataTest {
         double epsilon = 0.00001;
         double weight = 0.5;
         // skips memory usage
-        assertEquals(data.getMaxResourceUsage(), 0.04, epsilon);
+        assertEquals(data.getMaxResourceUsage(), 
data.getBandwidthOut().percentUsage() / 100, epsilon);
 
-        assertEquals(
-                data.getMaxResourceUsageWithWeight(
-                        weight, weight, weight, weight, weight), 2.0, epsilon);
+        assertEquals(data.getMaxResourceUsageWithWeight(weight, weight, 
weight, weight),
+                data.getBandwidthOut().percentUsage() * weight / 100, epsilon);
     }
 
     /*

Reply via email to