|
| 1 | + |
| 2 | +# PIP-358: let resource weight work for OverloadShedder, LeastLongTermMessageRate, ModularLoadManagerImpl. |
| 3 | + |
| 4 | +# Background knowledge |
| 5 | + |
| 6 | +Initially, we introduce `loadBalancerCPUResourceWeight`, `loadBalancerBandwidthInResourceWeight`, `loadBalancerBandwidthOutResourceWeight`, |
| 7 | +`loadBalancerMemoryResourceWeight`, `loadBalancerDirectMemoryResourceWeight` in `ThresholdShedder` to control the resource weight for |
| 8 | +different resources when calculating the load of the broker. |
| 9 | +Then we let it work for `LeastResourceUsageWithWeight` for better bundle placement policy. |
| 10 | + |
| 11 | +But https://github.com/apache/pulsar/pull/19559 and https://github.com/apache/pulsar/pull/21168 have pointed out that the actual load |
| 12 | +of the broker is not related to the memory usage and direct memory usage, thus we have changed the default value of |
| 13 | +`loadBalancerMemoryResourceWeight`, `loadBalancerDirectMemoryResourceWeight` to 0.0. |
| 14 | + |
| 15 | +There are still some places where memory usage and direct memory usage are used to calculate the load of the broker, such as |
| 16 | +`OverloadShedder`, `LeastLongTermMessageRate`, `ModularLoadManagerImpl`. We should let the resource weight work for these places |
| 17 | +so that we can set the resource weight to 0.0 to avoid the impact of memory usage and direct memory usage on the load of the broker. |
| 18 | + |
| 19 | +# Motivation |
| 20 | + |
| 21 | +The actual load of the broker is not related to the memory usage and direct memory usage, thus we should let the resource weight work for |
| 22 | +`OverloadShedder`, `LeastLongTermMessageRate`, `ModularLoadManagerImpl` so that we can set the resource weight to 0.0 to avoid the impact of |
| 23 | +memory usage and direct memory usage on the load of the broker. |
| 24 | + |
| 25 | + |
| 26 | +# Detailed Design |
| 27 | + |
| 28 | +Let resource weight work for `OverloadShedder`, `LeastLongTermMessageRate`, `ModularLoadManagerImpl`. |
| 29 | +- For `OverloadShedder`, `LeastLongTermMessageRate`, we replace `getMaxResourceUsage()` with `getMaxResourceUsageWithWeight()` in the calculation of the load of the broker. |
| 30 | +- For `ModularLoadManagerImpl`, we replace `getMaxResourceUsage()` with `getMaxResourceUsageWithWeight()` when checking if the broker is overloaded and decide whether to update the broker data to metadata store. |
| 31 | + |
| 32 | +# Backward & Forward Compatibility |
| 33 | + |
| 34 | + |
| 35 | +# Links |
| 36 | + |
| 37 | +* Mailing List discussion thread: https://lists.apache.org/thread/lj34s3vmjbzlwmy8d66d0bsb25vnq9ky |
| 38 | +* Mailing List voting thread: https://lists.apache.org/thread/b7dzm0yz6l40pkxmxhto5mro7brmz57r |
0 commit comments