|
@@ -2709,6 +2709,12 @@ static inline void update_tg_load_avg(struct cfs_rq *cfs_rq, int force)
|
|
{
|
|
{
|
|
long delta = cfs_rq->avg.load_avg - cfs_rq->tg_load_avg_contrib;
|
|
long delta = cfs_rq->avg.load_avg - cfs_rq->tg_load_avg_contrib;
|
|
|
|
|
|
|
|
+ /*
|
|
|
|
+ * No need to update load_avg for root_task_group as it is not used.
|
|
|
|
+ */
|
|
|
|
+ if (cfs_rq->tg == &root_task_group)
|
|
|
|
+ return;
|
|
|
|
+
|
|
if (force || abs(delta) > cfs_rq->tg_load_avg_contrib / 64) {
|
|
if (force || abs(delta) > cfs_rq->tg_load_avg_contrib / 64) {
|
|
atomic_long_add(delta, &cfs_rq->tg->load_avg);
|
|
atomic_long_add(delta, &cfs_rq->tg->load_avg);
|
|
cfs_rq->tg_load_avg_contrib = cfs_rq->avg.load_avg;
|
|
cfs_rq->tg_load_avg_contrib = cfs_rq->avg.load_avg;
|