1391e43daSPeter Zijlstra /* 2391e43daSPeter Zijlstra * Only give sleepers 50% of their service deficit. This allows 3391e43daSPeter Zijlstra * them to run sooner, but does not allow tons of sleepers to 4391e43daSPeter Zijlstra * rip the spread apart. 5391e43daSPeter Zijlstra */ 6f8b6d1ccSPeter Zijlstra SCHED_FEAT(GENTLE_FAIR_SLEEPERS, true) 7391e43daSPeter Zijlstra 8391e43daSPeter Zijlstra /* 9391e43daSPeter Zijlstra * Place new tasks ahead so that they do not starve already running 10391e43daSPeter Zijlstra * tasks 11391e43daSPeter Zijlstra */ 12f8b6d1ccSPeter Zijlstra SCHED_FEAT(START_DEBIT, true) 13391e43daSPeter Zijlstra 14391e43daSPeter Zijlstra /* 15391e43daSPeter Zijlstra * Prefer to schedule the task we woke last (assuming it failed 16391e43daSPeter Zijlstra * wakeup-preemption), since its likely going to consume data we 17391e43daSPeter Zijlstra * touched, increases cache locality. 18391e43daSPeter Zijlstra */ 19f8b6d1ccSPeter Zijlstra SCHED_FEAT(NEXT_BUDDY, false) 20391e43daSPeter Zijlstra 21391e43daSPeter Zijlstra /* 22391e43daSPeter Zijlstra * Prefer to schedule the task that ran last (when we did 23391e43daSPeter Zijlstra * wake-preempt) as that likely will touch the same data, increases 24391e43daSPeter Zijlstra * cache locality. 25391e43daSPeter Zijlstra */ 26f8b6d1ccSPeter Zijlstra SCHED_FEAT(LAST_BUDDY, true) 27391e43daSPeter Zijlstra 28391e43daSPeter Zijlstra /* 29391e43daSPeter Zijlstra * Consider buddies to be cache hot, decreases the likelyness of a 30391e43daSPeter Zijlstra * cache buddy being migrated away, increases cache locality. 31391e43daSPeter Zijlstra */ 32f8b6d1ccSPeter Zijlstra SCHED_FEAT(CACHE_HOT_BUDDY, true) 33391e43daSPeter Zijlstra 34391e43daSPeter Zijlstra /* 358ed92e51SIngo Molnar * Allow wakeup-time preemption of the current task: 368ed92e51SIngo Molnar */ 378ed92e51SIngo Molnar SCHED_FEAT(WAKEUP_PREEMPTION, true) 388ed92e51SIngo Molnar 398ed92e51SIngo Molnar /* 40*5d4dfdddSNicolas Pitre * Use arch dependent cpu capacity functions 41391e43daSPeter Zijlstra */ 42*5d4dfdddSNicolas Pitre SCHED_FEAT(ARCH_CAPACITY, true) 43391e43daSPeter Zijlstra 44f8b6d1ccSPeter Zijlstra SCHED_FEAT(HRTICK, false) 45f8b6d1ccSPeter Zijlstra SCHED_FEAT(DOUBLE_TICK, false) 46f8b6d1ccSPeter Zijlstra SCHED_FEAT(LB_BIAS, true) 47391e43daSPeter Zijlstra 48391e43daSPeter Zijlstra /* 49*5d4dfdddSNicolas Pitre * Decrement CPU capacity based on time not spent running tasks 50391e43daSPeter Zijlstra */ 51*5d4dfdddSNicolas Pitre SCHED_FEAT(NONTASK_CAPACITY, true) 52391e43daSPeter Zijlstra 53391e43daSPeter Zijlstra /* 54391e43daSPeter Zijlstra * Queue remote wakeups on the target CPU and process them 55391e43daSPeter Zijlstra * using the scheduler IPI. Reduces rq->lock contention/bounces. 56391e43daSPeter Zijlstra */ 57f8b6d1ccSPeter Zijlstra SCHED_FEAT(TTWU_QUEUE, true) 58391e43daSPeter Zijlstra 59f8b6d1ccSPeter Zijlstra SCHED_FEAT(FORCE_SD_OVERLAP, false) 60f8b6d1ccSPeter Zijlstra SCHED_FEAT(RT_RUNTIME_SHARE, true) 61eb95308eSPeter Zijlstra SCHED_FEAT(LB_MIN, false) 62cbee9f88SPeter Zijlstra 63cbee9f88SPeter Zijlstra /* 641a687c2eSMel Gorman * Apply the automatic NUMA scheduling policy. Enabled automatically 651a687c2eSMel Gorman * at runtime if running on a NUMA machine. Can be controlled via 66b726b7dfSMel Gorman * numa_balancing= 67cbee9f88SPeter Zijlstra */ 68cbee9f88SPeter Zijlstra #ifdef CONFIG_NUMA_BALANCING 691a687c2eSMel Gorman SCHED_FEAT(NUMA, false) 703a7053b3SMel Gorman 713a7053b3SMel Gorman /* 723a7053b3SMel Gorman * NUMA_FAVOUR_HIGHER will favor moving tasks towards nodes where a 733a7053b3SMel Gorman * higher number of hinting faults are recorded during active load 743a7053b3SMel Gorman * balancing. 753a7053b3SMel Gorman */ 763a7053b3SMel Gorman SCHED_FEAT(NUMA_FAVOUR_HIGHER, true) 777a0f3083SMel Gorman 787a0f3083SMel Gorman /* 797a0f3083SMel Gorman * NUMA_RESIST_LOWER will resist moving tasks towards nodes where a 807a0f3083SMel Gorman * lower number of hinting faults have been recorded. As this has 817a0f3083SMel Gorman * the potential to prevent a task ever migrating to a new node 827a0f3083SMel Gorman * due to CPU overload it is disabled by default. 837a0f3083SMel Gorman */ 847a0f3083SMel Gorman SCHED_FEAT(NUMA_RESIST_LOWER, false) 85cbee9f88SPeter Zijlstra #endif 86