1/* 2 * Disregards a certain amount of sleep time (sched_latency_ns) and 3 * considers the task to be running during that period. This gives it 4 * a service deficit on wakeup, allowing it to run sooner. 5 */ 6SCHED_FEAT(FAIR_SLEEPERS, 1) 7 8/* 9 * Only give sleepers 50% of their service deficit. This allows 10 * them to run sooner, but does not allow tons of sleepers to 11 * rip the spread apart. 12 */ 13SCHED_FEAT(GENTLE_FAIR_SLEEPERS, 1) 14 15/* 16 * By not normalizing the sleep time, heavy tasks get an effective 17 * longer period, and lighter task an effective shorter period they 18 * are considered running. 19 */ 20SCHED_FEAT(NORMALIZED_SLEEPER, 0) 21 22/* 23 * Place new tasks ahead so that they do not starve already running 24 * tasks 25 */ 26SCHED_FEAT(START_DEBIT, 1) 27 28/* 29 * Should wakeups try to preempt running tasks. 30 */ 31SCHED_FEAT(WAKEUP_PREEMPT, 1) 32 33/* 34 * Compute wakeup_gran based on task behaviour, clipped to 35 * [0, sched_wakeup_gran_ns] 36 */ 37SCHED_FEAT(ADAPTIVE_GRAN, 1) 38 39/* 40 * When converting the wakeup granularity to virtual time, do it such 41 * that heavier tasks preempting a lighter task have an edge. 42 */ 43SCHED_FEAT(ASYM_GRAN, 1) 44 45/* 46 * Always wakeup-preempt SYNC wakeups, see SYNC_WAKEUPS. 47 */ 48SCHED_FEAT(WAKEUP_SYNC, 0) 49 50/* 51 * Wakeup preempt based on task behaviour. Tasks that do not overlap 52 * don't get preempted. 53 */ 54SCHED_FEAT(WAKEUP_OVERLAP, 0) 55 56/* 57 * Wakeup preemption towards tasks that run short 58 */ 59SCHED_FEAT(WAKEUP_RUNNING, 0) 60 61/* 62 * Use the SYNC wakeup hint, pipes and the likes use this to indicate 63 * the remote end is likely to consume the data we just wrote, and 64 * therefore has cache benefit from being placed on the same cpu, see 65 * also AFFINE_WAKEUPS. 66 */ 67SCHED_FEAT(SYNC_WAKEUPS, 1) 68 69/* 70 * Based on load and program behaviour, see if it makes sense to place 71 * a newly woken task on the same cpu as the task that woke it -- 72 * improve cache locality. Typically used with SYNC wakeups as 73 * generated by pipes and the like, see also SYNC_WAKEUPS. 74 */ 75SCHED_FEAT(AFFINE_WAKEUPS, 1) 76 77/* 78 * Weaken SYNC hint based on overlap 79 */ 80SCHED_FEAT(SYNC_LESS, 1) 81 82/* 83 * Add SYNC hint based on overlap 84 */ 85SCHED_FEAT(SYNC_MORE, 0) 86 87/* 88 * Prefer to schedule the task we woke last (assuming it failed 89 * wakeup-preemption), since its likely going to consume data we 90 * touched, increases cache locality. 91 */ 92SCHED_FEAT(NEXT_BUDDY, 0) 93 94/* 95 * Prefer to schedule the task that ran last (when we did 96 * wake-preempt) as that likely will touch the same data, increases 97 * cache locality. 98 */ 99SCHED_FEAT(LAST_BUDDY, 1) 100 101/* 102 * Consider buddies to be cache hot, decreases the likelyness of a 103 * cache buddy being migrated away, increases cache locality. 104 */ 105SCHED_FEAT(CACHE_HOT_BUDDY, 1) 106 107/* 108 * Use arch dependent cpu power functions 109 */ 110SCHED_FEAT(ARCH_POWER, 0) 111 112SCHED_FEAT(HRTICK, 0) 113SCHED_FEAT(DOUBLE_TICK, 0) 114SCHED_FEAT(LB_BIAS, 1) 115SCHED_FEAT(LB_SHARES_UPDATE, 1) 116SCHED_FEAT(ASYM_EFF_LOAD, 1) 117 118/* 119 * Spin-wait on mutex acquisition when the mutex owner is running on 120 * another cpu -- assumes that when the owner is running, it will soon 121 * release the lock. Decreases scheduling overhead. 122 */ 123SCHED_FEAT(OWNER_SPIN, 1) 124