From: Tejun Heo <tj@kernel.org>
To: void@manifault.com
Cc: kernel-team@meta.com, linux-kernel@vger.kernel.org, sched-ext@meta.com
Subject: [PATCHSET sched_ext/for-6.12-fixes] sched_ext: Fix RCU and other stalls while iterating tasks during enable/disable
Date: Wed, 9 Oct 2024 11:40:56 -1000 [thread overview]
Message-ID: <20241009214411.681233-1-tj@kernel.org> (raw)
The enable/disable paths walk all tasks a couple times in bypass mode. There
are a couple problems:
- Bypass mode incorrectly depends on ops.select_cpu() which must not be
trusted in bypass mode.
- scx_tasks_lock is held while walking all tasks. This can lead to RCU and
other stalls on a large heavily contended system with many tasks.
Fix the former by always using the default select_cpu() in bypass mode and
the latter by periodically dropping scx_tasks_lock while iterating tasks.
This patchset contains the following patches:
0001-Revert-sched_ext-Use-shorter-slice-while-bypassing.patch
0002-sched_ext-Start-schedulers-with-consistent-p-scx.sli.patch
0003-sched_ext-Move-scx_buildin_idle_enabled-check-to-scx.patch
0004-sched_ext-bypass-mode-shouldn-t-depend-on-ops.select.patch
0005-sched_ext-Move-scx_tasks_lock-handling-into-scx_task.patch
0006-sched_ext-Don-t-hold-scx_tasks_lock-for-too-long.patch
0001 reverts an unnecessary earlier change.
0002 makes sure that p->scx.slice is consistent on scheduler load.
0003-0004 make bypass mode always use the default select_cpu().
0005-0006 make task iteration drop scx_tasks_lock periodically.
and is also available in the following git branch:
git://git.kernel.org/pub/scm/linux/kernel/git/tj/sched_ext.git scx-fix-task_iter-stalls
diffstat follows. Thanks.
kernel/sched/ext.c | 183 +++++++++++++++++++++++++++++++++++++-------------------------------
1 file changed, 100 insertions(+), 83 deletions(-)
--
tejun
next reply other threads:[~2024-10-09 21:44 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-10-09 21:40 Tejun Heo [this message]
2024-10-09 21:40 ` [PATCH 1/6] Revert "sched_ext: Use shorter slice while bypassing" Tejun Heo
2024-10-10 17:59 ` David Vernet
2024-10-09 21:40 ` [PATCH 2/6] sched_ext: Start schedulers with consistent p->scx.slice values Tejun Heo
2024-10-10 18:00 ` David Vernet
2024-10-09 21:40 ` [PATCH 3/6] sched_ext: Move scx_buildin_idle_enabled check to scx_bpf_select_cpu_dfl() Tejun Heo
2024-10-09 21:41 ` [PATCH 4/6] sched_ext: bypass mode shouldn't depend on ops.select_cpu() Tejun Heo
2024-10-10 18:15 ` David Vernet
2024-10-10 18:26 ` Tejun Heo
2024-10-10 18:31 ` David Vernet
2024-10-09 21:41 ` [PATCH 5/6] sched_ext: Move scx_tasks_lock handling into scx_task_iter helpers Tejun Heo
2024-10-10 18:36 ` David Vernet
2024-10-09 21:41 ` [PATCH 6/6] sched_ext: Don't hold scx_tasks_lock for too long Tejun Heo
2024-10-10 19:12 ` David Vernet
2024-10-10 21:38 ` Tejun Heo
2024-10-10 23:38 ` Waiman Long
2024-10-10 21:43 ` [PATCHSET sched_ext/for-6.12-fixes] sched_ext: Fix RCU and other stalls while iterating tasks during enable/disable Tejun Heo
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=20241009214411.681233-1-tj@kernel.org \
--to=tj@kernel.org \
--cc=kernel-team@meta.com \
--cc=linux-kernel@vger.kernel.org \
--cc=sched-ext@meta.com \
--cc=void@manifault.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.