lkml.org 
[lkml]   [2018]   [May]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH 6/7] psi: pressure stall information for CPU, memory, and IO
    On Mon, May 07, 2018 at 05:01:34PM -0400, Johannes Weiner wrote:

    > @@ -2038,6 +2038,7 @@ try_to_wake_up(struct task_struct *p, unsigned int state, int wake_flags)
    > cpu = select_task_rq(p, p->wake_cpu, SD_BALANCE_WAKE, wake_flags);
    > if (task_cpu(p) != cpu) {
    > wake_flags |= WF_MIGRATED;
    > + psi_ttwu_dequeue(p);
    > set_task_cpu(p, cpu);
    > }
    >

    > +static inline void psi_ttwu_dequeue(struct task_struct *p)
    > +{
    > + /*
    > + * Is the task being migrated during a wakeup? Make sure to
    > + * deregister its sleep-persistent psi states from the old
    > + * queue, and let psi_enqueue() know it has to requeue.
    > + */
    > + if (unlikely(p->in_iowait || (p->flags & PF_MEMSTALL))) {
    > + struct rq_flags rf;
    > + struct rq *rq;
    > + int clear = 0;
    > +
    > + if (p->in_iowait)
    > + clear |= TSK_IOWAIT;
    > + if (p->flags & PF_MEMSTALL)
    > + clear |= TSK_MEMSTALL;
    > +
    > + rq = __task_rq_lock(p, &rf);
    > + update_rq_clock(rq);
    > + psi_task_change(p, rq_clock(rq), clear, 0);
    > + p->sched_psi_wake_requeue = 1;
    > + __task_rq_unlock(rq, &rf);
    > + }
    > +}

    Yeah, no... not happening.

    We spend a lot of time to never touch the old rq->lock on wakeups. Mason
    was the one pushing for that, so he should very well know this.

    The one cross-cpu atomic (iowait) is already a problem (the whole iowait
    accounting being useless makes it even worse), adding significant remote
    prodding is just really bad.

    \
     
     \ /
      Last update: 2018-05-09 12:47    [W:4.100 / U:0.196 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site