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