On Mon, Nov 24, 2014 at 02:41:28PM +0000, Vincent Guittot wrote:
On 21 November 2014 at 13:37, Morten Rasmussen morten.rasmussen@arm.com wrote:
On Mon, Nov 03, 2014 at 04:54:45PM +0000, Vincent Guittot wrote:
[snip]
*/ if (prefer_sibling && sds->local &&
sds->local_stat.group_has_free_capacity)
sgs->group_capacity_factor = min(sgs->group_capacity_factor, 1U);
group_has_capacity(env, &sds->local_stat) &&
(sgs->sum_nr_running > 1)) {
sgs->group_no_capacity = 1;
sgs->group_type = group_overloaded;
}
I'm still a bit confused about SD_PREFER_SIBLING. What is the flag supposed to do and why?
The goal is to spread tasks across the group even if the the latter is not overloaded. for SMT level, the goal is to have 1 task per core before 1 task per HW thread
That makes more sense and is in line with how I understand SMT scheduling. So we try to have at least one task per group. Where each group is a domain with SD_PREFER_SIBLING.
Anyway, you don't change the prefer-sibling behaviour in this patch set. I was just wondering how it would work for SMT balancing.
Thanks, Morten