Messages in this thread | | | Date | Sat, 7 Apr 2012 10:32:14 +0800 | Subject | Re: [PATCH 06/16] sched: SCHED_DEADLINE push and pull logic | From | Hillf Danton <> |
| |
On Sat, Apr 7, 2012 at 1:31 AM, Juri Lelli <juri.lelli@gmail.com> wrote: >>> >>> kernel/sched_dl.c | 912 >>> kernel/sched_rt.c | 2 +-
You are working on 2.6.3x, x <= 8 ? If so, what is the reason(just curious)? Already planned to add in 3.3 and above?
>>> + if (!dl_entity_preempt(&entry->dl,&p->dl)) >> >> if (dl_entity_preempt(&p->dl,&entry->dl)) >> > > Any specific reason to reverse the condition? > Just for easing readers.
>>> +select_task_rq_dl(struct task_struct *p, int sd_flag, int flags) >>> +{ >>> + struct task_struct *curr; >>> + struct rq *rq; >>> + int cpu; >>> + >>> + if (sd_flag != SD_BALANCE_WAKE) >> >> why is task_cpu(p) not eligible? >> > > Right, I'll change this. > No, you will first IMO sort out clear answer to the question.
>>> + (rq->curr->dl.nr_cpus_allowed< 2 || >>> + dl_entity_preempt(&rq->curr->dl,&p->dl))&& >> >> !dl_entity_preempt(&p->dl,&rq->curr->dl))&& > > As above? > Just for easing reader.
>>> +#ifdef CONFIG_SMP >>> + /* >>> + * In the unlikely case current and p have the same deadline >>> + * let us try to decide what's the best thing to do... >>> + */ >>> + if ((s64)(p->dl.deadline - rq->curr->dl.deadline) == 0&& >>> + !need_resched()) >> >> please recheck !need_resched(), say rq->curr need reschedule? > > Sorry, I don't get this.. > Perhaps smp_processor_id() != rq->cpu
>> >> if (task_running(rq, p)) >> return 0; >> return cpumask_test_cpu(cpu, &p->cpus_allowed); > > We use this inside pull_dl_task. Since we are searching for a task to > pull, you must be sure that the found task can actually migrate checking > nr_cpus_allowed > 1. > If cpu is certainly allowed for task to run, but nr_cpus_allowed is no more than one, which is corrupted?
> > Well, ok with this and above. Anyway this code is completely removed in > 15/16. > Yup, another reason for monolith.
>>> + >>> +static DEFINE_PER_CPU(cpumask_var_t, local_cpu_mask_dl); >>> + >>> +static int find_later_rq(struct task_struct *task) >>> +{ >>> + struct sched_domain *sd; >>> + struct cpumask *later_mask = __get_cpu_var(local_cpu_mask_dl); >> >> please check is local_cpu_mask_dl valid >> > > Could you explain more why should I check for validity? > Only for the case that something comes in before it is initialized, IIRC encountered by Steven.
> > Ok, I'll prepare the monolithic patch and probably store it somewhere so > that it can be downloaded also by others. > Info Hillf once it is ready, thanks.
Good Weekend -hd -- 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/
| |