You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by al...@apache.org on 2021/10/25 04:52:20 UTC
[dubbo] branch master updated: Modified the warm-up function from
y=x to y=x^2 and make the warm-up process smoother (#9104)
This is an automated email from the ASF dual-hosted git repository.
albumenj pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/dubbo.git
The following commit(s) were added to refs/heads/master by this push:
new f05d086 Modified the warm-up function from y=x to y=x^2 and make the warm-up process smoother (#9104)
f05d086 is described below
commit f05d0863af8f26490597d2cb670a90faedc3fc64
Author: Steve Rao <zi...@126.com>
AuthorDate: Mon Oct 25 12:52:12 2021 +0800
Modified the warm-up function from y=x to y=x^2 and make the warm-up process smoother (#9104)
---
.../cluster/loadbalance/AbstractLoadBalance.java | 2 +-
.../cluster/loadbalance/LoadBalanceBaseTest.java | 25 ++++++++++++++--------
2 files changed, 17 insertions(+), 10 deletions(-)
diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/loadbalance/AbstractLoadBalance.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/loadbalance/AbstractLoadBalance.java
index e2c2a6f..de057cf 100644
--- a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/loadbalance/AbstractLoadBalance.java
+++ b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/loadbalance/AbstractLoadBalance.java
@@ -46,7 +46,7 @@ public abstract class AbstractLoadBalance implements LoadBalance {
* @return weight which takes warmup into account
*/
static int calculateWarmupWeight(int uptime, int warmup, int weight) {
- int ww = (int) ( uptime / ((float) warmup / weight));
+ int ww = (int) (Math.round(Math.pow((uptime / (double) warmup), 2) * weight));
return ww < 1 ? 1 : (Math.min(ww, weight));
}
diff --git a/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/loadbalance/LoadBalanceBaseTest.java b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/loadbalance/LoadBalanceBaseTest.java
index f9ab3ea..3c2c594 100644
--- a/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/loadbalance/LoadBalanceBaseTest.java
+++ b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/loadbalance/LoadBalanceBaseTest.java
@@ -141,15 +141,22 @@ public class LoadBalanceBaseTest {
Assertions.assertEquals(1, calculateDefaultWarmupWeight(0));
Assertions.assertEquals(1, calculateDefaultWarmupWeight(13));
Assertions.assertEquals(1, calculateDefaultWarmupWeight(6 * 1000));
- Assertions.assertEquals(2, calculateDefaultWarmupWeight(12 * 1000));
- Assertions.assertEquals(10, calculateDefaultWarmupWeight(60 * 1000));
- Assertions.assertEquals(50, calculateDefaultWarmupWeight(5 * 60 * 1000));
- Assertions.assertEquals(50, calculateDefaultWarmupWeight(5 * 60 * 1000 + 23));
- Assertions.assertEquals(50, calculateDefaultWarmupWeight(5 * 60 * 1000 + 5999));
- Assertions.assertEquals(51, calculateDefaultWarmupWeight(5 * 60 * 1000 + 6000));
- Assertions.assertEquals(90, calculateDefaultWarmupWeight(9 * 60 * 1000));
- Assertions.assertEquals(98, calculateDefaultWarmupWeight(10 * 60 * 1000 - 12 * 1000));
- Assertions.assertEquals(99, calculateDefaultWarmupWeight(10 * 60 * 1000 - 6 * 1000));
+ Assertions.assertEquals(1, calculateDefaultWarmupWeight(12 * 1000));
+ Assertions.assertEquals(1, calculateDefaultWarmupWeight(60 * 1000));
+ Assertions.assertEquals(4, calculateDefaultWarmupWeight(2* 60 * 1000));
+ Assertions.assertEquals(9, calculateDefaultWarmupWeight(3 * 60 * 1000));
+ Assertions.assertEquals(16, calculateDefaultWarmupWeight(4 * 60 * 1000));
+ Assertions.assertEquals(25, calculateDefaultWarmupWeight(5 * 60 * 1000));
+ Assertions.assertEquals(25, calculateDefaultWarmupWeight(5 * 60 * 1000 + 23));
+ Assertions.assertEquals(26, calculateDefaultWarmupWeight(5 * 60 * 1000 + 5999));
+ Assertions.assertEquals(26, calculateDefaultWarmupWeight(5 * 60 * 1000 + 6000));
+ Assertions.assertEquals(36, calculateDefaultWarmupWeight(6 * 60 * 1000));
+ Assertions.assertEquals(49, calculateDefaultWarmupWeight(7 * 60 * 1000));
+ Assertions.assertEquals(64, calculateDefaultWarmupWeight(8 * 60 * 1000));
+ Assertions.assertEquals(81, calculateDefaultWarmupWeight(9 * 60 * 1000));
+ Assertions.assertEquals(90, calculateDefaultWarmupWeight(10 * 60 * 1000 - 30 * 1000));
+ Assertions.assertEquals(93, calculateDefaultWarmupWeight(10 * 60 * 1000 - 20 * 1000));
+ Assertions.assertEquals(97, calculateDefaultWarmupWeight(10 * 60 * 1000 - 10 * 1000));
Assertions.assertEquals(100, calculateDefaultWarmupWeight(10 * 60 * 1000));
Assertions.assertEquals(100, calculateDefaultWarmupWeight(20 * 60 * 1000));
}