Messages in this thread | | | Subject | Re: [PATCH 1/3] sched, balancing: Update rq->max_idle_balance_cost whenever newidle balance is attempted | From | Jason Low <> | Date | Fri, 25 Apr 2014 00:13:10 -0700 |
| |
On Fri, 2014-04-25 at 10:42 +0530, Preeti U Murthy wrote: > I agree with this. However I am concerned with an additional point that > I have mentioned in my reply to Peter's mail on this thread. > > Should we verify if rq->next_balance update is independent of > pulled_tasks? sd->balance_interval is changed during load_balance() and > rq->next_balance should perhaps consider that?
Hi Preeti,
I agree that we may want to consider having rq->next balance update be independent of pulled_task. As you mentioned, load_balance() can modify the balance_interval.
There are a few things I'm wondering if we would need to also add then:
1. In the case that this_rq->avg_idle < sysctl_sched_migration_cost, we would need to also traverse the domains to properly compute next_balance (without the sd->busy_factor) as we would be going idle. Otherwise, next_balance could get set to jiffies + HZ while the CPU goes idle.
2. In the domain traversal, when we pulled_task, we might want to multiply interval by sd->busy_factor because the rq will remain busy.
3. If this_rq->avg_idle < curr_cost + sd->max_newidle_lb_cost, then we may still want to compute next_balance, rather than simply break out of the sched domain traversal loop. This is also to avoid having the next_balance = jiffies + HZ when a domain should rebalance less than 1 second later.
| |