All of lore.kernel.org
 help / color / mirror / Atom feed
From: Joel Fernandes <joel@joelfernandes.org>
To: Qais Yousef <qais.yousef@arm.com>
Cc: Youssef Esmat <youssefesmat@google.com>,
	Peter Zijlstra <peterz@infradead.org>,
	LKML <linux-kernel@vger.kernel.org>,
	Steven Rostedt <rostedt@goodmis.org>,
	juri.lelli@redhat.com, vincent.guittot@linaro.org,
	Dietmar Eggemann <dietmar.eggemann@arm.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	bristot@redhat.com, clark.williams@gmail.com,
	bigeasy@linutronix.de, "Paul E. McKenney" <paulmck@kernel.org>
Subject: Re: Sum of weights idea for CFS PI
Date: Mon, 10 Oct 2022 11:11:31 -0400	[thread overview]
Message-ID: <CAEXW_YQBkgpAd0i_gJULYqUsA0f=Bui1oKh0DR47G00stD1XYA@mail.gmail.com> (raw)
In-Reply-To: <20221010144650.fjwhjdbqqaxz4sow@wubuntu>

On Mon, Oct 10, 2022 at 10:46 AM Qais Yousef <qais.yousef@arm.com> wrote:
>
> On 10/08/22 11:04, Joel Fernandes wrote:
> >
> >
> > > On Oct 6, 2022, at 3:40 PM, Youssef Esmat <youssefesmat@google.com> wrote:
> > >
> > [..]
> > >>
> > >>> Anyway - just trying to explain how I see it and why C is unlikely to be
> > >>> taking too much time. I could be wrong. As Youssef said, I think there's
> > >>> no fundamental problem here.
> > >>
> > >> I know on Android where they use smaller HZ, the large tick causes lots of
> > >> problems for large nice deltas. Example if a highly niced task was to be
> > >> preempted for 1ms, and preempts instead at 3ms, then the less-niced task
> > >> will not be so nice (even less nice than it promised to be) any more
> > >> because of the 2ms boost that the higher niced task got. This can lead the
> > >> the sched_latency thrown out of the window. Not adjusting the weights
> > >> properly can potentially make that problem much worse IMO.
> > >
> > > Once C releases the lock it should get adjusted and A will get adjusted
> > > also regardless of tick. At the point we adjust the weights we have
> > > a chance to check for preemption and cause a reschedule.
> >
> > Yes but the lock can be held for potentially long time (and even user space
> > lock). I’m more comfortable with Peter’s PE patch which seems a more generic
> > solution, than sum of weights if we can get it working. I’m studying Connor’s
> > patch set now…
>
> The 2 solutions are equivalent AFAICT.

Possibly. Maybe I am talking about a non-issue then, but I had to be
careful ;-) Maybe both have the issue I was referring to, or they
don't. But in any case, PE seems more organic.

> With summation:
>
>    A    ,    B   ,    C   ,    D
> sleeping, running, running, running
>    -    ,   1/5  ,   3/5  ,   1/5
>
> Where we'll treat A as running but donate its bandwidth to C, the mutex owner.

> With PE:
>
>    A    ,    B   ,    C   ,    D
>  running, running, running, running
>    2/5  ,   1/5  ,   1/5  ,   1/5
>
> Where A will donate its execution context to C, the mutex owner.

Yes. It would also be great if Peter can participate in this thread,
if he has time. Not to nitpick but to be more precise in PE
terminology, you mean "scheduler context". The "execution context" is
not inherited [1]

If p1 is selected to run while still blocked, the lock owner p2 can
run "on its behalf", inheriting p1's scheduler context. Execution
context is not inherited, meaning that e.g. the CPUs where p2 can run
are still determined by its own affinity and not p1's.

[1] https://lore.kernel.org/all/73859883-78c4-1080-7846-e8d644ad397a@redhat.com/t/#mdf0146cdf78e48fc5cc515c1a34cdc1d596e0ed8

> In both cases we should end up with the same distribution as if neither A nor
> C ever go to sleep because of holding the mutex.

Hopefully!

> I still can't see how B and D fairness will be impacted as the solution to the
> problem is to never treat a waiter as sleeping and let the owner run for more,
> but only within the limit of what the waiter is allowed to run for. AFAICS,
> both solutions maintain this relationship.

True!

 - Joel

  reply	other threads:[~2022-10-10 15:11 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-09-29 20:38 Sum of weights idea for CFS PI Joel Fernandes
2022-09-30 13:49 ` Qais Yousef
2022-09-30 15:44   ` Youssef Esmat
2022-09-30 17:42     ` Joel Fernandes
2022-09-30 18:10       ` Youssef Esmat
2022-09-30 18:45         ` Joel Fernandes
2022-09-30 17:34   ` Joel Fernandes
2022-10-03 16:14     ` Qais Yousef
2022-10-03 16:27       ` Joel Fernandes
2022-10-04 16:30         ` Qais Yousef
2022-10-04 19:48           ` Joel Fernandes
2022-10-05  9:31             ` Qais Yousef
2022-10-04 20:27       ` Joel Fernandes
2022-10-05 10:04         ` Qais Yousef
2022-10-06 13:53           ` Joel Fernandes
2022-10-06 19:40             ` Youssef Esmat
2022-10-08 15:04               ` Joel Fernandes
2022-10-10 14:46                 ` Qais Yousef
2022-10-10 15:11                   ` Joel Fernandes [this message]
2022-10-12 14:30                     ` Qais Yousef
2022-10-04 11:50     ` Sebastian Andrzej Siewior
2022-10-04 14:43       ` Joel Fernandes

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAEXW_YQBkgpAd0i_gJULYqUsA0f=Bui1oKh0DR47G00stD1XYA@mail.gmail.com' \
    --to=joel@joelfernandes.org \
    --cc=bigeasy@linutronix.de \
    --cc=bristot@redhat.com \
    --cc=clark.williams@gmail.com \
    --cc=dietmar.eggemann@arm.com \
    --cc=juri.lelli@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=paulmck@kernel.org \
    --cc=peterz@infradead.org \
    --cc=qais.yousef@arm.com \
    --cc=rostedt@goodmis.org \
    --cc=tglx@linutronix.de \
    --cc=vincent.guittot@linaro.org \
    --cc=youssefesmat@google.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.