struct sched_domain_shared {
atomic_t ref;
atomic_t nr_busy_cpus; int has_idle_cores; int nr_idle_scan;
};
struct sched_domain { /* These fields must be setup */ struct sched_domain __rcu *parent; /* top domain must be null terminated */ struct sched_domain __rcu *child; /* bottom domain must be null terminated */ struct sched_group *groups; /* the balancing groups of the domain */ unsignedlong min_interval; /* Minimum balance interval ms */ unsignedlong max_interval; /* Maximum balance interval ms */ unsignedint busy_factor; /* less balancing by factor if busy */ unsignedint imbalance_pct; /* No balance until over watermark */ unsignedint cache_nice_tries; /* Leave cache hot tasks for # tries */ unsignedint imb_numa_nr; /* Nr running tasks that allows a NUMA imbalance */
int nohz_idle; /* NOHZ IDLE status */ int flags; /* See SD_* */ int level;
/* Runtime fields. */ unsignedlong last_balance; /* init to jiffies. units in jiffies */ unsignedint balance_interval; /* initialise to 1. units in ms. */ unsignedint nr_balance_failed; /* initialise to 0 */
/* try_to_wake_up() stats */ unsignedint ttwu_wake_remote; unsignedint ttwu_move_affine; unsignedint ttwu_move_balance; #endif char *name; union { void *private; /* used during construction */ struct rcu_head rcu; /* used during destruction */
}; struct sched_domain_shared *shared;
unsignedint span_weight; /* * Span of all CPUs in this domain. * * NOTE: this field is variable length. (Allocated dynamically * by attaching extra space to the end of the structure, * depending on how many CPUs the kernel has booted up with)
*/ unsignedlong span[];
};
/* Allocate an array of sched domains, for partition_sched_domains(). */
cpumask_var_t *alloc_sched_domains(unsignedint ndoms); void free_sched_domains(cpumask_var_t doms[], unsignedint ndoms);
bool cpus_equal_capacity(int this_cpu, int that_cpu); bool cpus_share_cache(int this_cpu, int that_cpu); bool cpus_share_resources(int this_cpu, int that_cpu);
typedefconststruct cpumask *(*sched_domain_mask_f)(struct sched_domain_topology_level *tl, int cpu); typedefint (*sched_domain_flags_f)(void);
#ifndef arch_scale_cpu_capacity /** * arch_scale_cpu_capacity - get the capacity scale factor of a given CPU. * @cpu: the CPU in question. * * Return: the CPU scale factor normalized against SCHED_CAPACITY_SCALE, i.e. * * max_perf(cpu) * ----------------------------- * SCHED_CAPACITY_SCALE * max(max_perf(c) : c \in CPUs)
*/ static __always_inline unsignedlong arch_scale_cpu_capacity(int cpu)
{ return SCHED_CAPACITY_SCALE;
} #endif
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.