From: Qais Yousef <qyousef-wp2msK0BRk8tq7phqP6ubQ@public.gmane.org>
To: Waiman Long <longman-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
Cc: Peter Zijlstra <peterz-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>,
Ingo Molnar <mingo-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>,
Juri Lelli <juri.lelli-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>,
Steven Rostedt <rostedt-nx8X9YLhiw1AfugRpC6u6w@public.gmane.org>,
tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org,
linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
luca.abeni-5rdYK369eBLQB0XuIGIEkQ@public.gmane.org,
claudio-YOzL5CV4y4YG1A2ADO40+w@public.gmane.org,
tommaso.cucinotta-5rdYK369eBLQB0XuIGIEkQ@public.gmane.org,
bristot-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org,
mathieu.poirier-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org,
Dietmar Eggemann <dietmar.eggemann-5wv7dgnIgG8@public.gmane.org>,
cgroups-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
Vincent Guittot
<vincent.guittot-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>,
Wei Wang <wvw-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>,
Rick Yiu <rickyiu-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>,
Quentin Perret <qperret-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>
Subject: Re: [PATCH v2] sched: cpuset: Don't rebuild sched domains on suspend-resume
Date: Mon, 30 Jan 2023 19:48:26 +0000 [thread overview]
Message-ID: <20230130194826.rxwk4ryvpyxemflm@airbuntu> (raw)
In-Reply-To: <253ced33-c3a8-269f-90cc-b69e66b10370-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
On 01/30/23 11:29, Waiman Long wrote:
> On 1/30/23 08:00, Qais Yousef wrote:
>
> just skip the call here if the condition is right? Like
>
> /* rebuild sched domains if cpus_allowed has changed */
> if (cpus_updated || (force_rebuild && !cpuhp_tasks_frozen)) {
> force_rebuild = false;
> rebuild_sched_domains();
> }
>
> Still, we will need to confirm that cpuhp_tasks_frozen will be cleared
> outside of the suspend/resume cycle.
>
> I think it's fine to use this variable from the cpuhp callback context only.
> Which I think this cpuset workfn is considered an extension of.
>
> But you're right, I can't use cpuhp_tasks_frozen directly in
> rebuild_root_domains() as I did in v1 because it doesn't get cleared after
> calling the last _cpu_up().
>
> That is what I suspect. So we can't use that cpuhp_tasks_frozen variable here
> in cpuset.
>
> force_rebuild will only be set after the last cpu
> is brought online though - so this should happen once at the end.
>
> Perhaps you can add another tracking variable for detecting if suspend/resume
> is in progress.
I think cpuhp_tasks_frozen is meant for that. All users who cared so far
belonged to the cpuhp callback. I think reading it from cpuset_hotplug_workfn()
is fine too as this function will only run as a consequence of the cpuhp
callback AFAICS. cpuset_cpu_active() takes care of not forcing a rebuild of
sched_domains until the last cpu becomes active - so the part of it being done
once at the end at resume is handled too.
It's just rebuild_sched_domains() will always assume it needs to clear and
rebuild deadline accounting - which is not true for suspend/resume case. But
now looking at other users of rebuild_sched_domains(), others might be getting
the hit too. For example rebuild_sched_domains_locked() is called on
update_relax_domain_level() which AFAIU should not impact dl accounting.
FWIW, I did capture a worst case scenario of 21ms because of
rebuild_root_domains().
/me thinks rebuild_root_domains() is a misleading name too as it just fixes
dl accounting but not rebuild the rd itself.
What makes sense to me now is to pass whether dl accounting requires updating
to rebuild_sched_domains() as an arg so that the caller can decide whether the
reason can affect dl accounting.
Or maybe pull rebuild_root_domains() out of the chain and let the caller call
it directly. And probably rename it to update_do_rd_accounting() or something.
I'll continue to dig more..
Thanks!
next prev parent reply other threads:[~2023-01-30 19:48 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-01-20 19:48 [PATCH v2] sched: cpuset: Don't rebuild sched domains on suspend-resume Qais Yousef
[not found] ` <20230120194822.962958-1-qyousef-wp2msK0BRk8tq7phqP6ubQ@public.gmane.org>
2023-01-20 22:16 ` Waiman Long
[not found] ` <c4c2dec6-a72b-d675-fb42-be40e384ea2c-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2023-01-25 16:35 ` Qais Yousef
2023-01-29 16:56 ` Qais Yousef
2023-01-30 2:49 ` Waiman Long
[not found] ` <45e0f8ea-d229-1ae7-5c12-7f0a64c6767a-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2023-01-30 2:58 ` Waiman Long
2023-01-30 13:00 ` Qais Yousef
[not found] ` <253ced33-c3a8-269f-90cc-b69e66b10370@redhat.com>
[not found] ` <253ced33-c3a8-269f-90cc-b69e66b10370-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2023-01-30 19:48 ` Qais Yousef [this message]
2023-01-30 19:57 ` Waiman Long
2023-01-31 19:22 ` Qais Yousef
2023-01-31 19:33 ` Waiman Long
[not found] ` <6587af4f-5012-ef33-8e0e-d6c43d662e43-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2023-02-02 19:20 ` Qais Yousef
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=20230130194826.rxwk4ryvpyxemflm@airbuntu \
--to=qyousef-wp2msk0brk8tq7phqp6ubq@public.gmane.org \
--cc=bristot-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
--cc=cgroups-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=claudio-YOzL5CV4y4YG1A2ADO40+w@public.gmane.org \
--cc=dietmar.eggemann-5wv7dgnIgG8@public.gmane.org \
--cc=juri.lelli-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
--cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=longman-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
--cc=luca.abeni-5rdYK369eBLQB0XuIGIEkQ@public.gmane.org \
--cc=mathieu.poirier-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org \
--cc=mingo-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org \
--cc=peterz-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org \
--cc=qperret-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org \
--cc=rickyiu-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org \
--cc=rostedt-nx8X9YLhiw1AfugRpC6u6w@public.gmane.org \
--cc=tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org \
--cc=tommaso.cucinotta-5rdYK369eBLQB0XuIGIEkQ@public.gmane.org \
--cc=vincent.guittot-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org \
--cc=wvw-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox