• Linus Torvalds's avatar
    Merge tag 'sched-core-2023-08-28' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 3ca9a836
    Linus Torvalds authored
    Pull scheduler updates from Ingo Molnar:
    
     - The biggest change is introduction of a new iteration of the
       SCHED_FAIR interactivity code: the EEVDF ("Earliest Eligible Virtual
       Deadline First") scheduler
    
       EEVDF too is a virtual-time scheduler, with two parameters (weight
       and relative deadline), compared to CFS that had weight only. It
       completely reworks the base scheduler: placement, preemption, picking
       -- everything
    
       LWN.net, as usual, has a terrific writeup about EEVDF:
    
          https://lwn.net/Articles/925371/
    
       Preemption (both tick and wakeup) is driven by testing against a
       fresh pick. Because the tree is now effectively an interval tree, and
       the selection is no longer the 'leftmost' task, over-scheduling is
       less of a problem. A lot of the CFS heuristics are removed or
       replaced by more natural latency-space parameters & constructs
    
       In terms of expected performance regressions: we will and can fix
       everything where a 'good' workload misbehaves with the new scheduler,
       but EEVDF inevitably changes workload scheduling in a binary fashion,
       hopefully for the better in the overwhelming majority of cases, but
       in some cases it won't, especially in adversarial loads that got
       lucky with the previous code, such as some variants of hackbench. We
       are trying hard to err on the side of fixing all performance
       regressions, but we expect some inevitable post-release iterations of
       that process
    
     - Improve load-balancing on hybrid x86 systems: enable cluster
       scheduling (again)
    
     - Improve & fix bandwidth-scheduling on nohz systems
    
     - Improve bandwidth-throttling
    
     - Use lock guards to simplify and de-goto-ify control flow
    
     - Misc improvements, cleanups and fixes
    
    * tag 'sched-core-2023-08-28' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (43 commits)
      sched/eevdf/doc: Modify the documented knob to base_slice_ns as well
      sched/eevdf: Curb wakeup-preemption
      sched: Simplify sched_core_cpu_{starting,deactivate}()
      sched: Simplify try_steal_cookie()
      sched: Simplify sched_tick_remote()
      sched: Simplify sched_exec()
      sched: Simplify ttwu()
      sched: Simplify wake_up_if_idle()
      sched: Simplify: migrate_swap_stop()
      sched: Simplify sysctl_sched_uclamp_handler()
      sched: Simplify get_nohz_timer_target()
      sched/rt: sysctl_sched_rr_timeslice show default timeslice after reset
      sched/rt: Fix sysctl_sched_rr_timeslice intial value
      sched/fair: Block nohz tick_stop when cfs bandwidth in use
      sched, cgroup: Restore meaning to hierarchical_quota
      MAINTAINERS: Add Peter explicitly to the psi section
      sched/psi: Select KERNFS as needed
      sched/topology: Align group flags when removing degenerate domain
      sched/fair: remove util_est boosting
      sched/fair: Propagate enqueue flags into place_entity()
      ...
    3ca9a836
fair.c 344 KB