diff mbox series

xen: make some per-scheduler performance counters sched global ones

Message ID 20211216054502.14085-1-jgross@suse.com (mailing list archive)
State New, archived
Headers show
Series xen: make some per-scheduler performance counters sched global ones | expand

Commit Message

Jürgen Groß Dec. 16, 2021, 5:45 a.m. UTC
Some performance counters listed to be credit or credit2 specific are
being used by the null scheduler, too.

Make those sched global ones.

Fixes: ab6ba8c6753fa76 ("perfc: conditionalize credit/credit2 counters")
Signed-off-by: Juergen Gross <jgross@suse.com>
---
 xen/include/xen/perfc_defn.h | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

Comments

Jan Beulich Dec. 16, 2021, 8:44 a.m. UTC | #1
On 16.12.2021 06:45, Juergen Gross wrote:
> Some performance counters listed to be credit or credit2 specific are
> being used by the null scheduler, too.
> 
> Make those sched global ones.
> 
> Fixes: ab6ba8c6753fa76 ("perfc: conditionalize credit/credit2 counters")
> Signed-off-by: Juergen Gross <jgross@suse.com>

As an immediate fix
Reviewed-by: Jan Beulich <jbeulich@suse.com>

Thanks for doing this so quickly.

However, ...

> @@ -55,7 +58,6 @@ PERFCOUNTER(steal_trylock,          "csched: steal_trylock")
>  PERFCOUNTER(steal_trylock_failed,   "csched: steal_trylock_failed")
>  PERFCOUNTER(steal_peer_idle,        "csched: steal_peer_idle")
>  PERFCOUNTER(migrate_queued,         "csched: migrate_queued")
> -PERFCOUNTER(migrate_running,        "csched: migrate_running")
>  PERFCOUNTER(migrate_kicked_away,    "csched: migrate_kicked_away")
>  PERFCOUNTER(unit_hot,               "csched: unit_hot")
>  #endif
> @@ -67,13 +69,11 @@ PERFCOUNTER(acct_load_balance,      "csched2: acct_load_balance")
>  PERFCOUNTER(upd_max_weight_quick,   "csched2: update_max_weight_quick")
>  PERFCOUNTER(upd_max_weight_full,    "csched2: update_max_weight_full")
>  PERFCOUNTER(migrate_requested,      "csched2: migrate_requested")
> -PERFCOUNTER(migrate_on_runq,        "csched2: migrate_on_runq")
>  PERFCOUNTER(migrate_no_runq,        "csched2: migrate_no_runq")
>  PERFCOUNTER(runtime_min_timer,      "csched2: runtime_min_timer")
>  PERFCOUNTER(runtime_max_timer,      "csched2: runtime_max_timer")
>  PERFCOUNTER(pick_resource,          "csched2: pick_resource")
>  PERFCOUNTER(need_fallback_cpu,      "csched2: need_fallback_cpu")
> -PERFCOUNTER(migrated,               "csched2: migrated")

... at least for this one I question the use in the null scheduler:
At the very least I'd expect it shouldn't count what's being counted
by the other two already (i.e. there would be an "else" missing).
But then I'm confused by the the use of these three anyway: Why do
things migrate under null in the first place? This looks to be
contrary to the comment at the top of the file:

 * The 'null' scheduler always choose to run, on each pCPU, either nothing
 * (i.e., the pCPU stays idle) or always the same unit.

Jan
Stefano Stabellini Dec. 16, 2021, 8:25 p.m. UTC | #2
On Thu, 16 Dec 2021, Jan Beulich wrote:
> On 16.12.2021 06:45, Juergen Gross wrote:
> > Some performance counters listed to be credit or credit2 specific are
> > being used by the null scheduler, too.
> > 
> > Make those sched global ones.
> > 
> > Fixes: ab6ba8c6753fa76 ("perfc: conditionalize credit/credit2 counters")
> > Signed-off-by: Juergen Gross <jgross@suse.com>
> 
> As an immediate fix
> Reviewed-by: Jan Beulich <jbeulich@suse.com>

I tested the patch and it fixes the issue

Tested-by: Stefano Stabellini <sstabellini@kernel.org>
diff mbox series

Patch

diff --git a/xen/include/xen/perfc_defn.h b/xen/include/xen/perfc_defn.h
index 672b51c456..0027d95a60 100644
--- a/xen/include/xen/perfc_defn.h
+++ b/xen/include/xen/perfc_defn.h
@@ -34,6 +34,9 @@  PERFCOUNTER(tickled_idle_cpu,       "sched: tickled_idle_cpu")
 PERFCOUNTER(tickled_idle_cpu_excl,  "sched: tickled_idle_cpu_exclusive")
 PERFCOUNTER(tickled_busy_cpu,       "sched: tickled_busy_cpu")
 PERFCOUNTER(unit_check,             "sched: unit_check")
+PERFCOUNTER(migrate_running,        "sched: migrate_running")
+PERFCOUNTER(migrate_on_runq,        "sched: migrate_on_runq")
+PERFCOUNTER(migrated,               "sched: migrated")
 
 /* credit specific counters */
 #ifdef CONFIG_SCHED_CREDIT
@@ -55,7 +58,6 @@  PERFCOUNTER(steal_trylock,          "csched: steal_trylock")
 PERFCOUNTER(steal_trylock_failed,   "csched: steal_trylock_failed")
 PERFCOUNTER(steal_peer_idle,        "csched: steal_peer_idle")
 PERFCOUNTER(migrate_queued,         "csched: migrate_queued")
-PERFCOUNTER(migrate_running,        "csched: migrate_running")
 PERFCOUNTER(migrate_kicked_away,    "csched: migrate_kicked_away")
 PERFCOUNTER(unit_hot,               "csched: unit_hot")
 #endif
@@ -67,13 +69,11 @@  PERFCOUNTER(acct_load_balance,      "csched2: acct_load_balance")
 PERFCOUNTER(upd_max_weight_quick,   "csched2: update_max_weight_quick")
 PERFCOUNTER(upd_max_weight_full,    "csched2: update_max_weight_full")
 PERFCOUNTER(migrate_requested,      "csched2: migrate_requested")
-PERFCOUNTER(migrate_on_runq,        "csched2: migrate_on_runq")
 PERFCOUNTER(migrate_no_runq,        "csched2: migrate_no_runq")
 PERFCOUNTER(runtime_min_timer,      "csched2: runtime_min_timer")
 PERFCOUNTER(runtime_max_timer,      "csched2: runtime_max_timer")
 PERFCOUNTER(pick_resource,          "csched2: pick_resource")
 PERFCOUNTER(need_fallback_cpu,      "csched2: need_fallback_cpu")
-PERFCOUNTER(migrated,               "csched2: migrated")
 PERFCOUNTER(migrate_resisted,       "csched2: migrate_resisted")
 PERFCOUNTER(credit_reset,           "csched2: credit_reset")
 PERFCOUNTER(deferred_to_tickled_cpu,"csched2: deferred_to_tickled_cpu")