lkml.org 
[lkml]   [2012]   [Jan]   [26]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [RFC PATCH v1 1/2] sched: unified sched_powersavings sysfs tunable
On 01/25/2012 03:53 PM, Peter Zijlstra wrote:
> On Mon, 2012-01-16 at 21:52 +0530, Vaidyanathan Srinivasan wrote:
>> +++ b/block/blk.h
>> @@ -167,14 +167,15 @@ static inline int queue_congestion_off_threshold(struct request_queue *q)
>> static inline int blk_cpu_to_group(int cpu)
>> {
>> int group = NR_CPUS;
>> -#ifdef CONFIG_SCHED_MC
>> - const struct cpumask *mask = cpu_coregroup_mask(cpu);
>> - group = cpumask_first(mask);
>> -#elif defined(CONFIG_SCHED_SMT)
>> - group = cpumask_first(topology_thread_cpumask(cpu));
>> +#ifdef CONFIG_SCHED_POWERSAVE
>> + if (smt_capable())
>> + group = cpumask_first(topology_thread_cpumask(cpu));
>> + else
>> + group = cpumask_first(cpu_coregroup_mask(cpu));
>> #else
>> return cpu;
>> #endif
>> + /* Possible dead code?? */
>> if (likely(group < NR_CPUS))
>> return group;
>> return cpu;
>
> After going, WTF is block doing! I had a closer look and this doesn't
> seem right at all. The old code would use coregroup_mask when SCHED_MC
> && SCHED_SMT, the new code does something else.
>
> Jens, what is this thing trying to do?

Not surprised that it's broken for some configs. The intent of the code
is to return the first CPU in the "group" that the passed in core/thread
belongs to. This is used to decide whether to perform a completion
locally, or to send it off to a different "group".

--
Jens Axboe



\
 
 \ /
  Last update: 2012-01-26 11:45    [from the cache]
©2003-2011 Jasper Spaans