lkml.org 
[lkml]   [2012]   [Apr]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    SubjectRe: [PATCH 06/16] sched: SCHED_DEADLINE push and pull logic
    From
    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/

    \
     
     \ /
      Last update: 2012-04-07 04:35    [W:6.487 / U:0.052 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site