cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

features.h (2619B)


      1/* SPDX-License-Identifier: GPL-2.0 */
      2/*
      3 * Only give sleepers 50% of their service deficit. This allows
      4 * them to run sooner, but does not allow tons of sleepers to
      5 * rip the spread apart.
      6 */
      7SCHED_FEAT(GENTLE_FAIR_SLEEPERS, true)
      8
      9/*
     10 * Place new tasks ahead so that they do not starve already running
     11 * tasks
     12 */
     13SCHED_FEAT(START_DEBIT, true)
     14
     15/*
     16 * Prefer to schedule the task we woke last (assuming it failed
     17 * wakeup-preemption), since its likely going to consume data we
     18 * touched, increases cache locality.
     19 */
     20SCHED_FEAT(NEXT_BUDDY, false)
     21
     22/*
     23 * Prefer to schedule the task that ran last (when we did
     24 * wake-preempt) as that likely will touch the same data, increases
     25 * cache locality.
     26 */
     27SCHED_FEAT(LAST_BUDDY, true)
     28
     29/*
     30 * Consider buddies to be cache hot, decreases the likeliness of a
     31 * cache buddy being migrated away, increases cache locality.
     32 */
     33SCHED_FEAT(CACHE_HOT_BUDDY, true)
     34
     35/*
     36 * Allow wakeup-time preemption of the current task:
     37 */
     38SCHED_FEAT(WAKEUP_PREEMPTION, true)
     39
     40SCHED_FEAT(HRTICK, false)
     41SCHED_FEAT(HRTICK_DL, false)
     42SCHED_FEAT(DOUBLE_TICK, false)
     43
     44/*
     45 * Decrement CPU capacity based on time not spent running tasks
     46 */
     47SCHED_FEAT(NONTASK_CAPACITY, true)
     48
     49#ifdef CONFIG_PREEMPT_RT
     50SCHED_FEAT(TTWU_QUEUE, false)
     51#else
     52
     53/*
     54 * Queue remote wakeups on the target CPU and process them
     55 * using the scheduler IPI. Reduces rq->lock contention/bounces.
     56 */
     57SCHED_FEAT(TTWU_QUEUE, true)
     58#endif
     59
     60/*
     61 * When doing wakeups, attempt to limit superfluous scans of the LLC domain.
     62 */
     63SCHED_FEAT(SIS_PROP, true)
     64
     65/*
     66 * Issue a WARN when we do multiple update_rq_clock() calls
     67 * in a single rq->lock section. Default disabled because the
     68 * annotations are not complete.
     69 */
     70SCHED_FEAT(WARN_DOUBLE_CLOCK, false)
     71
     72#ifdef HAVE_RT_PUSH_IPI
     73/*
     74 * In order to avoid a thundering herd attack of CPUs that are
     75 * lowering their priorities at the same time, and there being
     76 * a single CPU that has an RT task that can migrate and is waiting
     77 * to run, where the other CPUs will try to take that CPUs
     78 * rq lock and possibly create a large contention, sending an
     79 * IPI to that CPU and let that CPU push the RT task to where
     80 * it should go may be a better scenario.
     81 */
     82SCHED_FEAT(RT_PUSH_IPI, true)
     83#endif
     84
     85SCHED_FEAT(RT_RUNTIME_SHARE, false)
     86SCHED_FEAT(LB_MIN, false)
     87SCHED_FEAT(ATTACH_AGE_LOAD, true)
     88
     89SCHED_FEAT(WA_IDLE, true)
     90SCHED_FEAT(WA_WEIGHT, true)
     91SCHED_FEAT(WA_BIAS, true)
     92
     93/*
     94 * UtilEstimation. Use estimated CPU utilization.
     95 */
     96SCHED_FEAT(UTIL_EST, true)
     97SCHED_FEAT(UTIL_EST_FASTUP, true)
     98
     99SCHED_FEAT(LATENCY_WARN, false)
    100
    101SCHED_FEAT(ALT_PERIOD, true)
    102SCHED_FEAT(BASE_SLICE, true)