| From | Paul Turner <> | Date | Fri, 17 Feb 2012 02:52:51 -0800 | Subject | Re: [RFC PATCH 06/14] sched: aggregate total task_group load |
| |
On Thu, Feb 16, 2012 at 8:41 PM, Nikunj A Dadhania <nikunj@linux.vnet.ibm.com> wrote: > On Wed, 01 Feb 2012 17:38:26 -0800, Paul Turner <pjt@google.com> wrote: >> +static inline void __update_cfs_rq_tg_load_contrib(struct cfs_rq *cfs_rq, >> + int force_update) >> +{ >> + struct task_group *tg = cfs_rq->tg; >> + s64 tg_contrib; >> + >> + tg_contrib = cfs_rq->runnable_load_avg + cfs_rq->blocked_load_avg; >> + tg_contrib -= cfs_rq->tg_load_contrib; >> + >> + if (force_update || abs64(tg_contrib) > cfs_rq->tg_load_contrib / 8) { >> > Not obvious to me where this 8 is coming from? >
It's arbitrary, it requires a change in load contrib by more than 1/8th -- or 12.5% -- of the contrib we're advertising globally before we pay the cost of an update in the non-forced case.
We used the same trick in the previous shares tracking code since we did not have a natural rate limit on the update rate. While this is not as much of an issue in the new code, it does not seem to be hurting the accuracy and squashing essentially spurious updates does not hurt.
- Paul
> Regards > Nikunj > -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
|