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);
}
/*