[ovs-dev] [PATCH 1/3] bond: Change rebalance ratio to be more fair

Ben Pfaff blp at nicira.com
Wed Jan 9 20:38:09 UTC 2013


Done.

On Tue, Jan 08, 2013 at 12:16:34PM +0000, Zoltan Kiss wrote:
> Thanks, can you merge it to 1.4 branch please? We plan to release
> this in an XS 6.1 hotfix sometime.
> 
> Zoli
> 
> On 07/01/13 23:16, Ben Pfaff wrote:
> >On Mon, Jan 07, 2013 at 10:47:51PM +0000, Zoltan Kiss wrote:
> >>The old algorithm tries to converge to 0, despite it would mean a very
> >>unbalanced situation. We're aiming for an ideal ratio of 1, meaning both
> >>the 'from' and 'to' slave have the same load.  Therefore, we only move an
> >>entry if it decreases the load on from, and brings us closer to equal
> >>traffic load.
> >>
> >>Signed-off-by: Zoltan Kiss <zoltan.kiss at citrix.com>
> >
> >Thanks.  I made a few style adjustments and applied it to master as
> >follows.
> >
> >--8<--------------------------cut here-------------------------->8--
> >
> >From: Zoltan Kiss <zoltan.kiss at citrix.com>
> >Date: Mon, 7 Jan 2013 22:47:51 +0000
> >Subject: [PATCH] bond: Change rebalance ratio to be more fair
> >
> >The old algorithm tries to converge to 0, despite it would mean a very
> >unbalanced situation. We're aiming for an ideal ratio of 1, meaning both
> >the 'from' and 'to' slave have the same load.  Therefore, we only move an
> >entry if it decreases the load on 'from', and brings us closer to equal
> >traffic load.
> >
> >Signed-off-by: Zoltan Kiss <zoltan.kiss at citrix.com>
> >Signed-off-by: Ben Pfaff <blp at nicira.com>
> >---
> >  lib/bond.c |    9 +++++++--
> >  1 files changed, 7 insertions(+), 2 deletions(-)
> >
> >diff --git a/lib/bond.c b/lib/bond.c
> >index 62f38c9..fe84f9c 100644
> >--- a/lib/bond.c
> >+++ b/lib/bond.c
> >@@ -21,6 +21,7 @@
> >  #include <limits.h>
> >  #include <stdint.h>
> >  #include <stdlib.h>
> >+#include <math.h>
> >
> >  #include "coverage.h"
> >  #include "dynamic-string.h"
> >@@ -772,8 +773,12 @@ choose_entry_to_migrate(const struct bond_slave *from, uint64_t to_tx_bytes)
> >          delta = e->tx_bytes;
> >          old_ratio = (double)from->tx_bytes / to_tx_bytes;
> >          new_ratio = (double)(from->tx_bytes - delta) / (to_tx_bytes + delta);
> >-        if (old_ratio - new_ratio > 0.1) {
> >-            /* Would decrease the ratio, move it. */
> >+        if (old_ratio - new_ratio > 0.1
> >+            && fabs(new_ratio - 1.0) < fabs(old_ratio - 1.0)) {
> >+            /* We're aiming for an ideal ratio of 1, meaning both the 'from'
> >+               and 'to' slave have the same load.  Therefore, we only move an
> >+               entry if it decreases the load on 'from', and brings us closer
> >+               to equal traffic load. */
> >              return e;
> >          }
> >      }
> >
> 



More information about the dev mailing list