• Tony Luck's avatar
    x86/resctrl: Implement new mba_MBps throttling heuristic · c2427e70
    Tony Luck authored
    The mba_MBps feedback loop increases throttling when a group is using
    more bandwidth than the target set by the user in the schemata file, and
    decreases throttling when below target.
    
    To avoid possibly stepping throttling up and down on every poll a flag
    "delta_comp" is set whenever throttling is changed to indicate that the
    actual change in bandwidth should be recorded on the next poll in
    "delta_bw". Throttling is only reduced if the current bandwidth plus
    delta_bw is below the user target.
    
    This algorithm works well if the workload has steady bandwidth needs.
    But it can go badly wrong if the workload moves to a different phase
    just as the throttling level changed. E.g. if the workload becomes
    essentially idle right as throttling level is increased, the value
    calculated for delta_bw will be more or less the old bandwidth level.
    If the workload then resumes, Linux may never reduce throttling because
    current bandwidth plus delta_bw is above the target set by the user.
    
    Implement a simpler heuristic by assuming that in the worst case the
    currently measured bandwidth is being controlled by the current level of
    throttling. Compute how much it may increase if throttling is relaxed to
    the next higher level. If that is still below the user target, then it
    is ok to reduce the amount of throttling.
    
    Fixes: ba0f26d8 ("x86/intel_rdt/mba_sc: Prepare for feedback loop")
    Reported-by: default avatarXiaochen Shen <xiaochen.shen@intel.com>
    Signed-off-by: default avatarTony Luck <tony.luck@intel.com>
    Signed-off-by: default avatarBorislav Petkov (AMD) <bp@alien8.de>
    Reviewed-by: default avatarReinette Chatre <reinette.chatre@intel.com>
    Tested-by: default avatarXiaochen Shen <xiaochen.shen@intel.com>
    Link: https://lore.kernel.org/r/20240122180807.70518-1-tony.luck@intel.com
    c2427e70
monitor.c 21.4 KB