diff options
Diffstat (limited to '0027-credit2-respect-credit2_runqueue-all-when-arranging-.patch')
-rw-r--r-- | 0027-credit2-respect-credit2_runqueue-all-when-arranging-.patch | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/0027-credit2-respect-credit2_runqueue-all-when-arranging-.patch b/0027-credit2-respect-credit2_runqueue-all-when-arranging-.patch new file mode 100644 index 0000000..6c8ab5c --- /dev/null +++ b/0027-credit2-respect-credit2_runqueue-all-when-arranging-.patch @@ -0,0 +1,69 @@ +From 366693226ce025e8721626609b4b43b9061b55f5 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= + <marmarek@invisiblethingslab.com> +Date: Fri, 3 Mar 2023 08:13:20 +0100 +Subject: [PATCH 27/61] credit2: respect credit2_runqueue=all when arranging + runqueues +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +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 a6018fd5c3..7b7a619c1b 100644 +--- a/docs/misc/xen-command-line.pandoc ++++ b/docs/misc/xen-command-line.pandoc +@@ -724,6 +724,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> ]` + +diff --git a/xen/common/sched/credit2.c b/xen/common/sched/credit2.c +index 6396b38e04..1a240f417a 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 +-- +2.40.0 + |