The commit is pushed to "branch-rh7-3.10.0-123.1.2-ovz" and will appear at 
https://src.openvz.org/scm/ovz/vzkernel.git
after rh7-3.10.0-123.1.2.vz7.4.9
------>
commit f3167fce64f7ae1d406fab9ea2845aafd8fc474d
Author: Dmitry Monakhov <dmonak...@openvz.org>
Date:   Tue May 5 13:44:41 2015 +0400

    vziolimit: port diff-vziolimit-fix-rounding-error-in-throttler
    
    vziolimit: fix rounding error in throttler
    
    In some cases this error can lead to doubling of IO bandwidth,
    especially if the speed is small and not a divisor of 1000.
    
    https://jira.sw.ru/browse/PSBM-13302
    
    Signed-off-by: Konstantin Khlebnikov <khlebni...@openvz.org>
    
    ====================================
    https://jira.sw.ru/browse/PSBM-20104
    
    Signed-off-by: Dmitry Monakhov <dmonak...@openvz.org>
---
 kernel/ve/vziolimit.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/kernel/ve/vziolimit.c b/kernel/ve/vziolimit.c
index 890d7e8..473e2b7 100644
--- a/kernel/ve/vziolimit.c
+++ b/kernel/ve/vziolimit.c
@@ -18,6 +18,7 @@ struct throttle {
        unsigned speed;         /* maximum speed, units per second */
        unsigned burst;         /* maximum bust, units */
        unsigned latency;       /* maximum wait delay, jiffies */
+       unsigned remain;                /* units/HZ */
        unsigned long time;     /* wall time in jiffies */
        long long state;                /* current state in units */
 };
@@ -70,8 +71,8 @@ static void throttle_charge(struct throttle *th, long long 
charge)
                        time = now + th->latency;
                th->time = time;
                step *= th->speed;
-               if (do_div(step, HZ))
-                       step++;
+               step += th->remain;
+               th->remain = do_div(step, HZ);
                th->state += step;
        }
 }
_______________________________________________
Devel mailing list
Devel@openvz.org
https://lists.openvz.org/mailman/listinfo/devel

Reply via email to