---
name: "chrt"
section: "1"
platform: "linux"
package: "util-linux"
version: "2.42.4-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/chrt"
---

# chrt(1)

manipulate the real-time attributes of a process

## NAME

chrt - manipulate the real-time attributes of a process

## SYNOPSIS

**chrt** \[options\] \[*priority*\] *command* \[*argument*...\]

**chrt --pid** \[options\] \[*priority*\] *PID*

## DESCRIPTION

**chrt** sets or retrieves the real-time scheduling attributes of an existing *PID*, or runs *command* with the given attributes.

## POLICY OPTIONS

- **-o**, **--other**

  Set scheduling policy to **SCHED\_OTHER** (time-sharing scheduling). This is the default Linux scheduling policy. Since util-linux v2.42, the priority argument is optional; if specified, it must be set to zero.

- **-f**, **--fifo**

  Set scheduling policy to **SCHED\_FIFO** (first in-first out).

- **-r**, **--rr**

  Set scheduling policy to **SCHED\_RR** (round-robin scheduling). When no policy is defined, the **SCHED\_RR** is used as the default.

- **-b**, **--batch**

  Set scheduling policy to **SCHED\_BATCH** (scheduling batch processes). Linux-specific, supported since 2.6.16. Since util-linux v2.42, the priority argument is optional; if specified, it must be set to zero.

- **-i**, **--idle**

  Set scheduling policy to **SCHED\_IDLE** (scheduling very low priority jobs). Linux-specific, supported since 2.6.23. Since util-linux v2.42, the priority argument is optional; if specified, it must be set to zero.

- **-d**, **--deadline**

  Set scheduling policy to **SCHED\_DEADLINE** (sporadic task model deadline scheduling). Linux-specific, supported since 3.14. Since util-linux v2.42, the priority argument is optional; if specified, it must be set to zero. See also **--sched-runtime**, **--sched-deadline** and **--sched-period**. The relation between the options required by the kernel is runtime ⇐ deadline ⇐ period. **chrt** copies *period* to *deadline* if **--sched-deadline** is not specified and *deadline* to *runtime* if **--sched-runtime** is not specified. It means that at least **--sched-period** has to be specified. See [**sched**(7)](/sched/7.md) for more details.

- **-e**, **--ext**

  Set scheduling policy to **SCHED\_EXT** (BPF program-defined scheduling). Linux-specific, supported since 6.12. Since util-linux v2.42, the priority argument is optional; if specified, it must be set to zero. Note that for the policy to be recognized, the following kernel configuration options need to be enabled: **CONFIG\_BPF**, **CONFIG\_SCHED\_CLASS\_EXT**, **CONFIG\_BPF\_SYSCALL**, **CONFIG\_BPF\_JIT**, **CONFIG\_DEBUG\_INFO\_BTF**, **CONFIG\_BPF\_JIT\_ALWAYS\_ON** and **CONFIG\_BPF\_JIT\_DEFAULT\_ON**.

## SCHEDULING OPTIONS

- **-T**, **--sched-runtime** *nanoseconds*

  Specifies runtime parameter for **SCHED\_DEADLINE** and custom slice length for **SCHED\_OTHER** and **SCHED\_BATCH** policies (Linux-specific). Note that custom slice length via the runtime parameter is supported since Linux 6.12.

- **-P**, **--sched-period** *nanoseconds*

  Specifies period parameter for **SCHED\_DEADLINE** policy (Linux-specific). Note that the kernel’s lower limit is 100 microseconds.

- **-D**, **--sched-deadline** *nanoseconds*

  Specifies deadline parameter for **SCHED\_DEADLINE** policy (Linux-specific).

- **-R**, **--reset-on-fork**

  Use **SCHED\_RESET\_ON\_FORK** or **SCHED\_FLAG\_RESET\_ON\_FORK** flag. Linux-specific, supported since 2.6.31.

  Each thread has a *reset-on-fork* scheduling flag. When this flag is set, children created by [**fork**(2)](/fork/2.md) do not inherit privileged scheduling policies. After the *reset-on-fork* flag has been enabled, it can be reset only if the thread has the **CAP\_SYS\_NICE** capability. This flag is disabled in child processes created by [**fork**(2)](/fork/2.md).

  More precisely, if the *reset-on-fork* flag is set, the following rules apply for subsequently created children:

  • If the calling thread has a scheduling policy of **SCHED\_FIFO** or **SCHED\_RR**, the policy is reset to **SCHED\_OTHER** in child processes.

  • If the calling process has a negative nice value, the nice value is reset to zero in child processes.

## OPTIONS

- **-a**, **--all-tasks**

  Set or retrieve the scheduling attributes of all the tasks (threads) for a given PID.

- **-m**, **--max**

  Show minimum and maximum valid priorities, then exit.

- **-p**, **--pid**

  Operate on an existing PID and do not launch a new task.

- **-v**, **--verbose**

  Show status information.

- **-h**, **--help**

  Display help text and exit.

- **-V**, **--version**

  Display version and exit.

## EXAMPLES

The default behavior is to run a new command:

**chrt** *priority* *command* \[*arguments*\]\

You can also retrieve the real-time attributes of an existing task:

**chrt --pid** *PID*\

Or set them:

**chrt --pid** *policy-option priority PID*\

For example, to set the scheduling policy to **SCHED\_RR** (round-robin) and the priority to **30** for process **1234**:

**chrt --pid -r 30 1234**\

Reset priorities to default for a process:

**chrt --pid -o 0** *PID*\

Set a custom slice of 1 ms for a **SCHED\_OTHER** task (priority is optional for policies other than **SCHED\_FIFO** and **SCHED\_RR**):

**chrt --pid -o -T 1000000** *PID*\

See [**sched**(7)](/sched/7.md) for a detailed discussion of the different scheduler classes and how they interact.

## PERMISSIONS

A user must possess **CAP\_SYS\_NICE** to change the scheduling attributes of a process. Any user can retrieve the scheduling information.

## NOTES

Only **SCHED\_FIFO**, **SCHED\_OTHER** and **SCHED\_RR** are part of POSIX 1003.1b Process Scheduling. The other scheduling attributes may be ignored on some systems.

Linux' default scheduling policy is **SCHED\_OTHER**.

## AUTHORS

*Robert Love* \<rml@tech9.net\>, *Karel Zak* \<kzak@redhat.com\>

## SEE ALSO

[**nice**(1)](/nice/1.md), [**renice**(1)](/renice/1.md), [**taskset**(1)](/taskset/1.md), [**sched**(7)](/sched/7.md)

See [**sched\_setscheduler**(2)](/sched_setscheduler/2.md) for a description of the Linux scheduling scheme.

## REPORTING BUGS

For bug reports, use the *issue tracker* \<https://github.com/util-linux/util-linux/issues\>.

## AVAILABILITY

The **chrt** command is part of the util-linux package which can be downloaded from *Linux Kernel Archive* \<https://www.kernel.org/pub/linux/utils/util-linux/\>.
