• Philippe Longepe's avatar
    cpufreq: intel_pstate: Account for non C0 time · e70eed2b
    Philippe Longepe authored
    The current function to calculate cpu utilization uses the average P-state
    ratio (APerf/Mperf) scaled by the ratio of the current P-state to the
    max available non-turbo one. This leads to an overestimation of
    utilization which causes higher-performance P-states to be selected more
    often and that leads to increased energy consumption.
    
    This is a problem for low-power systems, so it is better to use a
    different utilization calculation algorithm for them.
    
    Namely, the Percent Busy value (or load) can be estimated as the ratio of the
    MPERF counter that runs at a constant rate only during active periods (C0) to
    the time stamp counter (TSC) that also runs (at the same rate) during idle.
    That is:
    
    Percent Busy = 100 * (delta_mperf / delta_tsc)
    
    Use this algorithm for platforms with SoCs based on the Airmont and Silvermont
    Atom cores.
    Signed-off-by: default avatarPhilippe Longepe <philippe.longepe@intel.com>
    Signed-off-by: default avatarStephane Gasparini <stephane.gasparini@intel.com>
    Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
    e70eed2b
intel_pstate.c 33.9 KB