Mailing List Archive

[xen stable-4.17] credit2: respect credit2_runqueue=all when arranging runqueues
commit 74b76704fd4059e9133e84c1384501858e9663b7
Author: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
AuthorDate: Fri Mar 3 07:57:39 2023 +0100
Commit: Jan Beulich <jbeulich@suse.com>
CommitDate: Fri Mar 3 07:57:39 2023 +0100

credit2: respect credit2_runqueue=all when arranging runqueues

Documentation for credit2_runqueue=all says it should create one queue
for all pCPUs on the host. But since introduction
sched_credit2_max_cpus_runqueue, it actually created separate runqueue
per socket, even if the CPUs count is below
sched_credit2_max_cpus_runqueue.

Adjust the condition to skip syblink check in case of
credit2_runqueue=all.

Fixes: 8e2aa76dc167 ("xen: credit2: limit the max number of CPUs in a runqueue")
Signed-off-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
Reviewed-by: Juergen Gross <jgross@suse.com>
master commit: 1f5747ee929fbbcae58d7234c6c38a77495d0cfe
master date: 2023-02-15 16:12:42 +0100
---
docs/misc/xen-command-line.pandoc | 5 +++++
xen/common/sched/credit2.c | 9 +++++++--
2 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/docs/misc/xen-command-line.pandoc b/docs/misc/xen-command-line.pandoc
index 807ca51fb2..5be5ce10c6 100644
--- a/docs/misc/xen-command-line.pandoc
+++ b/docs/misc/xen-command-line.pandoc
@@ -726,6 +726,11 @@ Available alternatives, with their meaning, are:
* `all`: just one runqueue shared by all the logical pCPUs of
the host

+Regardless of the above choice, Xen attempts to respect
+`sched_credit2_max_cpus_runqueue` limit, which may mean more than one runqueue
+for the `all` value. If that isn't intended, raise
+the `sched_credit2_max_cpus_runqueue` value.
+
### dbgp
> `= ehci[ <integer> | @pci<bus>:<slot>.<func> ]`
> `= xhci[ <integer> | @pci<bus>:<slot>.<func> ][,share=<bool>|hwdom]`
diff --git a/xen/common/sched/credit2.c b/xen/common/sched/credit2.c
index 0e3f89e537..ae55feea34 100644
--- a/xen/common/sched/credit2.c
+++ b/xen/common/sched/credit2.c
@@ -996,9 +996,14 @@ cpu_add_to_runqueue(const struct scheduler *ops, unsigned int cpu)
*
* Otherwise, let's try to make sure that siblings stay in the
* same runqueue, pretty much under any cinrcumnstances.
+ *
+ * Furthermore, try to respect credit2_runqueue=all, as long as
+ * max_cpus_runq isn't violated.
*/
- if ( rqd->refcnt < max_cpus_runq && (ops->cpupool->gran != SCHED_GRAN_cpu ||
- cpu_runqueue_siblings_match(rqd, cpu, max_cpus_runq)) )
+ if ( rqd->refcnt < max_cpus_runq &&
+ (ops->cpupool->gran != SCHED_GRAN_cpu ||
+ cpu_runqueue_siblings_match(rqd, cpu, max_cpus_runq) ||
+ opt_runqueue == OPT_RUNQUEUE_ALL) )
{
/*
* This runqueue is ok, but as we said, we also want an even
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.17