• Waiman Long's avatar
    intel_idle: Add ibrs_off module parameter to force-disable IBRS · aa1567a7
    Waiman Long authored
    Commit bf5835bc ("intel_idle: Disable IBRS during long idle")
    disables IBRS when the cstate is 6 or lower. However, there are
    some use cases where a customer may want to use max_cstate=1 to
    lower latency. Such use cases will suffer from the performance
    degradation caused by the enabling of IBRS in the sibling idle thread.
    Add a "ibrs_off" module parameter to force disable IBRS and the
    CPUIDLE_FLAG_IRQ_ENABLE flag if set.
    
    In the case of a Skylake server with max_cstate=1, this new ibrs_off
    option will likely increase the IRQ response latency as IRQ will now
    be disabled.
    
    When running SPECjbb2015 with cstates set to C1 on a Skylake system.
    
    First test when the kernel is booted with: "intel_idle.ibrs_off":
    
      max-jOPS = 117828, critical-jOPS = 66047
    
    Then retest when the kernel is booted without the "intel_idle.ibrs_off"
    added:
    
      max-jOPS = 116408, critical-jOPS = 58958
    
    That means booting with "intel_idle.ibrs_off" improves performance by...
    aa1567a7
intel_idle.rst 15.9 KB