Struct nc::types::sched_attr_t[][src]

#[repr(C)]
pub struct sched_attr_t { pub size: u32, pub sched_policy: u32, pub sched_flags: u64, pub sched_nice: i32, pub sched_priority: u32, pub sched_runtime: u64, pub sched_deadline: u64, pub sched_period: u64, pub sched_util_min: u32, pub sched_util_max: u32, }
Expand description

Extended scheduling parameters data structure.

This is needed because the original struct sched_param can not be altered without introducing ABI issues with legacy applications (e.g., in sched_getparam()).

However, the possibility of specifying more than just a priority for the tasks may be useful for a wide variety of application fields, e.g., multimedia, streaming, automation and control, and many others.

This variant (sched_attr) allows to define additional attributes to improve the scheduler knowledge about task requirements.

Scheduling Class Attributes

A subset of sched_attr attributes specifies the scheduling policy and relative POSIX attributes:

@size size of the structure, for fwd/bwd compat.

@sched_policy task’s scheduling policy @sched_nice task’s nice value (SCHED_NORMAL/BATCH) @sched_priority task’s static priority (SCHED_FIFO/RR)

Certain more advanced scheduling features can be controlled by a predefined set of flags via the attribute:

@sched_flags for customizing the scheduler behaviour

Sporadic Time-Constrained Task Attributes

A subset of sched_attr attributes allows to describe a so-called sporadic time-constrained task.

In such a model a task is specified by:

  • the activation period or minimum instance inter-arrival time;
  • the maximum (or average, depending on the actual scheduling discipline) computation time of all instances, a.k.a. runtime;
  • the deadline (relative to the actual activation time) of each instance. Very briefly, a periodic (sporadic) task asks for the execution of some specific computation –which is typically called an instance– (at most) every period. Moreover, each instance typically lasts no more than the runtime and must be completed by time instant t equal to the instance activation time + the deadline.

This is reflected by the following fields of the sched_attr structure:

@sched_deadline representative of the task’s deadline @sched_runtime representative of the task’s runtime @sched_period representative of the task’s period

Given this task model, there are a multiplicity of scheduling algorithms and policies, that can be used to ensure all the tasks will make their timing constraints.

As of now, the SCHED_DEADLINE policy (sched_dl scheduling class) is the only user of this new interface. More information about the algorithm available in the scheduling class file or in Documentation/.

Task Utilization Attributes

A subset of sched_attr attributes allows to specify the utilization expected for a task. These attributes allow to inform the scheduler about the utilization boundaries within which it should schedule the task. These boundaries are valuable hints to support scheduler decisions on both task placement and frequency selection.

@sched_util_min represents the minimum utilization @sched_util_max represents the maximum utilization

Utilization is a value in the range [0..SCHED_CAPACITY_SCALE]. It represents the percentage of CPU time used by a task when running at the maximum frequency on the highest capacity CPU of the system. For example, a 20% utilization task is a task running for 2ms every 10ms at maximum frequency.

A task with a min utilization value bigger than 0 is more likely scheduled on a CPU with a capacity big enough to fit the specified value. A task with a max utilization value smaller than 1024 is more likely scheduled on a CPU with no more capacity than the specified value.

Fields

size: u32sched_policy: u32sched_flags: u64sched_nice: i32

SCHED_NORMAL, SCHED_BATCH

sched_priority: u32

SCHED_FIFO, SCHED_RR

sched_runtime: u64

SCHED_DEADLINE

sched_deadline: u64sched_period: u64sched_util_min: u32

Utilization hints

sched_util_max: u32

Trait Implementations

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

Formats the value using the given formatter. Read more

Returns the “default value” for a type. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

Performs the conversion.

The resulting type after obtaining ownership.

Creates owned data from borrowed data, usually by cloning. Read more

🔬 This is a nightly-only experimental API. (toowned_clone_into)

Uses borrowed data to replace owned data, usually by cloning. Read more

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.