priocntl(1) on Solnix vs Linux and the BSDs

priocntl is the illumos command at /usr/bin/priocntl. It displays or sets the scheduling class and class-specific parameters of processes, selected by idtype and idlist, or runs a command under chosen parameters. Linux chrt, FreeBSD rtprio and NetBSD schedctl are different-name counterparts with a much narrower model: they cover only real-time and idle priorities or POSIX policies, and have no process-set selection.

What Solnix runs

A default Solnix system runs the illumos priocntl at /usr/bin/priocntl. No other variants are shipped. The bundle shows only part of the page: the class-specific option sections (Real-Time Class and the others) are trimmed, so their option letters and ranges are not described here.

Differences

Compared withTopicWhat differs
Linux, FreeBSD, NetBSDscheduling modelSolnix has five named classes (RT, TS, IA, FSS, FX), each with its own class-specific options, plus an internal sys class. Linux chrt works with SCHED_FIFO, SCHED_OTHER, SCHED_RR and others. NetBSD schedctl -C takes SCHED_OTHER, SCHED_FIFO or SCHED_RR. FreeBSD rtprio has realtime and idle priorities.
Source: Solnix priocntl(1) DESCRIPTION, -c class; Linux chrt(1) NOTES; NetBSD schedctl(8) -C; FreeBSD rtprio(1) DESCRIPTION
Linux, FreeBSD, NetBSDmode selectionSolnix priocntl uses one mode flag: -l (configuration), -d (display), -s (set) or -e (execute a command). chrt selects by presence of --pid and a priority, rtprio by argument form, and schedctl by -p versus a command. None of them has a separate display flag like -d.
Source: Solnix priocntl(1) SYNOPSIS; Linux chrt(1) SYNOPSIS, -p; FreeBSD rtprio(1) SYNOPSIS; NetBSD schedctl(8) SYNOPSIS
Linux, FreeBSD, NetBSDselecting many processesSolnix -i idtype with an idlist can target pid, ppid, pgid, sid, taskid, class, uid, gid, projid, zoneid, ctid or all. chrt, rtprio and schedctl take a single PID, and schedctl can narrow to one thread with -t lid.
Source: Solnix priocntl(1) DESCRIPTION, -i idtype; Linux chrt(1) SYNOPSIS; FreeBSD rtprio(1) SYNOPSIS; NetBSD schedctl(8) -p, -t
Linux, FreeBSD, NetBSDdefault targetWith -d or -s and no -i, Solnix assumes idtype pid. With no idlist, an idtype of pid and similar refers to the priocntl process itself. FreeBSD rtprio with no arguments reports the current process's priority.
Source: Solnix priocntl(1) OPTIONS -i, DESCRIPTION; FreeBSD rtprio(1) DESCRIPTION
FreeBSD, NetBSDwho may change parametersOn Solnix a user may change a process when real or effective UID/GID match the target's, or when effective UID is super-user; individual classes can add requirements. FreeBSD and NetBSD restrict changes mostly to root or the super-user.
Source: Solnix priocntl(1) DESCRIPTION (permissions); FreeBSD rtprio(1) DESCRIPTION; NetBSD schedctl(8) DESCRIPTION
Linux, FreeBSD, NetBSDerror handling over a process setOn Solnix, after a permission error priocntl prints a message and continues through the set. After any other error it prints a message and exits at once. The order of processing is implementation-specific. The counterpart pages do not describe set processing.
Source: Solnix priocntl(1) DESCRIPTION; Linux chrt(1); FreeBSD rtprio(1); NetBSD schedctl(8)
Linux, FreeBSD, NetBSDpriority numberingFreeBSD rtprio priority runs 0 to RTP_PRIO_MAX (usually 31) with 0 the highest. NetBSD schedctl -P runs 0 to 63, and cannot be set for SCHED_OTHER. Linux chrt -m prints the valid range. The Solnix ranges are in the class sections, which the bundle trims.
Source: FreeBSD rtprio(1) DESCRIPTION; NetBSD schedctl(8) -P; Linux chrt(1) -m; Solnix priocntl(1) (class sections trimmed)
Linux, NetBSDCPU affinityNetBSD schedctl -A sets CPU affinity, and -1 clears it. The priocntl synopsis has no affinity option. Linux chrt does not cover affinity either: its SEE ALSO points to taskset(1).
Source: NetBSD schedctl(8) -A; Solnix priocntl(1) SYNOPSIS; Linux chrt(1) SEE ALSO
Linux, FreeBSD, NetBSDclass configuration and initOn Solnix, -c class automatically configures the class if it is not yet configured. The init process (PID 1) can be changed only with idtype pid and idlist 1. Processes cannot be moved into the sys class. The counterpart pages say nothing similar.
Source: Solnix priocntl(1) OPTIONS -c, DESCRIPTION
FreeBSDexit statusFreeBSD rtprio exits with the command's status when it runs one, otherwise 0 on success and 1 on any other error. The priocntl text in the bundle has no EXIT STATUS section, so its exit values are not shown here.
Source: FreeBSD rtprio(1) EXIT STATUS; Solnix priocntl(1) (no EXIT STATUS in bundle)

Everyday tasks

TaskSolnixLinuxFreeBSDNetBSD
show scheduling configuration or valid prioritiespriocntl -lchrt -m——
show a process's scheduling parameterspriocntl -d -i pid PIDchrt -p PIDrtprio PIDschedctl -p PID
change a running processpriocntl -s -c class [class options] -i pid PIDchrt -p [options] priority PIDrtprio priority -PIDschedctl -C class -P pri -p PID
run a command with given schedulingpriocntl -e -c class [class options] commandchrt [options] priority commandrtprio priority commandschedctl -C class -P pri command
run a command as a normal, non-realtime processpriocntl -e -c TS command—rtprio -t command—

Standards

  • POSIX: priocntl is not a POSIX.1-2024 utility.
  • Linux: chrt(1) 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.

Writing portable scripts

  • Do not script class changes portably with one command. Pick the tool by presence (priocntl, chrt, rtprio, schedctl), because option letters and models differ.
  • Avoid real-time classes in scripts unless needed. The Solnix page warns that a runnable real-time process runs before any other, and FreeBSD warns you can lock yourself out.

Every difference here is taken from the manual pages linked above: Solnix's published page, Linux (man-pages and the GNU and util-linux manuals), FreeBSD, OpenBSD and NetBSD. Each row names its source. Where a manual is silent, this page is too. Compiled 2026-10-26. Found a mistake? Mail hackers@lists.solnix.io.