Re: [PATCH v1] cpufreq: intel_pstate: Make it possible to avoid enabling CAS
From: srinivas pandruvada
Date: Sun Feb 09 2025 - 22:14:23 EST
On Fri, 2025-02-07 at 13:55 +0100, Rafael J. Wysocki wrote:
> On Mon, Jan 27, 2025 at 3:07 PM Rafael J. Wysocki <rjw@xxxxxxxxxxxxx>
> wrote:
> >
> > From: Rafael J. Wysocki <rafael.j.wysocki@xxxxxxxxx>
> >
> > Capacity-aware scheduling (CAS) is enabled by default by
> > intel_pstate on
> > hybrid systems without SMT, but in some usage scenarios it may be
> > more
> > attractive to place tasks for maximum CPU performance regardless of
> > the
> > extra cost in terms of energy, which is the case on such systems
> > when
> > CAS is not enabled, so introduce a command line option to forbid
> > intel_pstate to enable CAS.
> >
> > Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@xxxxxxxxx>
>
> Srinivas,
>
> Any concerns or comments?
>
No.
Acked-by:Srinivas Pandruvada <srinivas.pandruvada@xxxxxxxxxxxxxxx>
> > ---
> > Documentation/admin-guide/kernel-parameters.txt | 3 +++
> > Documentation/admin-guide/pm/intel_pstate.rst | 3 +++
> > drivers/cpufreq/intel_pstate.c | 9 +++++++++
> > 3 files changed, 15 insertions(+)
> >
> > --- a/Documentation/admin-guide/kernel-parameters.txt
> > +++ b/Documentation/admin-guide/kernel-parameters.txt
> > @@ -2295,6 +2295,9 @@
> > per_cpu_perf_limits
> > Allow per-logical-CPU P-State performance
> > control limits using
> > cpufreq sysfs interface
> > + no_cas
> > + Do not enable capacity-aware scheduling
> > (CAS) on
> > + hybrid systems
> >
> > intremap= [X86-64,Intel-IOMMU,EARLY]
> > on enable Interrupt Remapping
> > (default)
> > --- a/Documentation/admin-guide/pm/intel_pstate.rst
> > +++ b/Documentation/admin-guide/pm/intel_pstate.rst
> > @@ -696,6 +696,9 @@
> > Use per-logical-CPU P-State limits (see `Coordination of P-
> > state
> > Limits`_ for details).
> >
> > +``no_cas``
> > + Do not enable capacity-aware scheduling (CAS) which is
> > enabled by
> > + default on hybrid systems.
> >
> > Diagnostics and Tuning
> > ======================
> > --- a/drivers/cpufreq/intel_pstate.c
> > +++ b/drivers/cpufreq/intel_pstate.c
> > @@ -936,6 +936,8 @@
> > NULL,
> > };
> >
> > +static bool no_cas __ro_after_init;
> > +
> > static struct cpudata *hybrid_max_perf_cpu __read_mostly;
> > /*
> > * Protects hybrid_max_perf_cpu, the capacity_perf fields in
> > struct cpudata,
> > @@ -1041,6 +1043,10 @@
> >
> > static void hybrid_init_cpu_capacity_scaling(bool refresh)
> > {
> > + /* Bail out if enabling capacity-aware scheduling is
> > prohibited. */
> > + if (no_cas)
> > + return;
> > +
> > /*
> > * If hybrid_max_perf_cpu is set at this point, the hybrid
> > CPU capacity
> > * scaling has been enabled already and the driver is just
> > changing the
> > @@ -3835,6 +3841,9 @@
> > if (!strcmp(str, "no_hwp"))
> > no_hwp = 1;
> >
> > + if (!strcmp(str, "no_cas"))
> > + no_cas = true;
> > +
> > if (!strcmp(str, "force"))
> > force_load = 1;
> > if (!strcmp(str, "hwp_only"))
> >
> >
> >
> >
>