Pull scheduler fixes from Borislav Petkov: - Prevent incorrect dequeueing of the deadline dlserver helper task and fix its time accounting - Properly track the CFS runqueue runnable stats - Check the total number of all queued tasks in a sched fair's runqueue hierarchy before deciding to stop the tick - Fix the scheduling of the task that got woken last (NEXT_BUDDY) by preventing those from being delayed * tag 'sched_urgent_for_v6.13_rc3-p2' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: sched/dlserver: Fix dlserver time accounting sched/dlserver: Fix dlserver double enqueue sched/eevdf: More PELT vs DELAYED_DEQUEUE sched/fair: Fix sched_can_stop_tick() for fair tasks sched/fair: Fix NEXT_BUDDY
Showing the changes to include/linux (1 of 7 files). Show all
Unified · Split
| @@ -656,6 +656,12 @@ struct sched_dl_entity { · 655 unmodified lines | ||
| 656 | 656 | * @dl_defer_armed tells if the deferrable server is waiting |
| 657 | 657 | * for the replenishment timer to activate it. |
| 658 | 658 | * |
| 659 | + * @dl_server_active tells if the dlserver is active(started). | |
| 660 | + * dlserver is started on first cfs enqueue on an idle runqueue | |
| 661 | + * and is stopped when a dequeue results in 0 cfs tasks on the | |
| 662 | + * runqueue. In other words, dlserver is active only when cpu's | |
| 663 | + * runqueue has atleast one cfs task. | |
| 664 | + * | |
| 659 | 665 | * @dl_defer_running tells if the deferrable server is actually |
| 660 | 666 | * running, skipping the defer phase. |
| 661 | 667 | */ |
| @@ -664,6 +670,7 @@ struct sched_dl_entity { · 2 unmodified lines | ||
| 664 | 670 | unsigned int dl_non_contending : 1; |
| 665 | 671 | unsigned int dl_overrun : 1; |
| 666 | 672 | unsigned int dl_server : 1; |
| 673 | + unsigned int dl_server_active : 1; | |
| 667 | 674 | unsigned int dl_defer : 1; |
| 668 | 675 | unsigned int dl_defer_armed : 1; |
| 669 | 676 | unsigned int dl_defer_running : 1; |