psradm(8) on Solnix vs Linux and the BSDs
psradm is the illumos command at /usr/sbin/psradm that sets a processor's operational state (on-line, off-line, spare, faulted, no-intr, disabled). Linux chcpu and NetBSD cpuctl do similar jobs, but with different flags and states. psradm can also disable SMT siblings with -aS.
The manual pages
- Solnix: psradm(8) from
pkgs.solnix.illumos-world-man· illumos.org - Linux: chcpu(8) util-linux-2.42.3 (different command, similar job)
- NetBSD: cpuctl(8) 11.0 (different command, similar job)
What Solnix runs
A default Solnix system runs the illumos psradm at /usr/sbin/psradm. No other variants are shipped. Only users with the PRIV_SYS_RES_CONFIG privilege can run it. To view processor state, see psrinfo(8).
Differences
| Compared with | Topic | What differs |
|---|---|---|
| Linux, NetBSD | command model | psradm takes one state flag (-f, -i, -n, -s) plus processor IDs. Linux chcpu uses -e, -d, -c, -g with a cpu-list. NetBSD cpuctl takes a subcommand word (online, offline, intr, nointr). Flags do not carry over between them.Source: Solnix psradm(8) SYNOPSIS; Linux chcpu(8) SYNOPSIS; NetBSD cpuctl(8) SYNOPSIS |
| Linux | ID list syntax | psradm takes IDs separated by spaces and ranges like 1-4, for example 1-3 5 7-8. Linux chcpu takes one comma-separated list such as 0,5,7,9-11. Source: Solnix psradm(8) OPERANDS; Linux chcpu(8) DESCRIPTION |
| NetBSD | ID list syntax | psradm accepts ranges such as 1-4 as processor_id. The NetBSD cpuctl page shows only 'cpu [cpu ...]' operands and does not mention ranges. Source: Solnix psradm(8) OPERANDS; NetBSD cpuctl(8) offline, online |
| Linux, NetBSD | processor states | psradm has six states: on-line, off-line, spare, faulted, no-intr and disabled. chcpu pages describe enable/disable (online/offline) and configure/deconfigure. cpuctl describes online, offline, and interrupts on or off. Neither page has spare or faulted. Source: Solnix psradm(8) DESCRIPTION; Linux chcpu(8) -c, -d, -e, -g; NetBSD cpuctl(8) online, offline, intr, nointr |
| Linux, NetBSD | forcing off-line with bound threads | On Solnix, a processor with bound LWPs cannot go off-line, disabled or spare unless -F is used; -F removes the bindings first. The chcpu page does not mention bindings. NetBSD says bound LWPs keep running on an off-line CPU.Source: Solnix psradm(8) DESCRIPTION, -F; NetBSD cpuctl(8) offline; Linux chcpu(8) -d |
| Linux, NetBSD | disabling SMT | psradm -aS puts the SMT siblings of each core in the disabled state, leaving one CPU per core in use. -a is required, and -F is needed to bring a CPU out of disabled. The chcpu and cpuctl pages document no SMT option.Source: Solnix psradm(8) DESCRIPTION, -S; Linux chcpu(8) OPTIONS; NetBSD cpuctl(8) DESCRIPTION |
| Linux, NetBSD | all-CPU option | psradm -a applies the action to all processors, or as many as possible. The chcpu and cpuctl pages show no equivalent flag; you must name each CPU.Source: Solnix psradm(8) -a; Linux chcpu(8) SYNOPSIS; NetBSD cpuctl(8) SYNOPSIS |
| Linux | exit status | psradm returns 0 on success and >0 on any error. chcpu returns 0 for success, 1 for failure and 64 for partial success. Source: Solnix psradm(8) EXIT STATUS; Linux chcpu(8) EXIT STATUS |
| Linux, NetBSD | extra functions | psradm only changes processor state. chcpu also rescans for new CPUs (-r) and sets dispatch mode (-p). cpuctl also lists CPUs (list), identifies them (identify) and applies microcode (ucode). On Solnix, listing is done with psrinfo(8).Source: Solnix psradm(8) SEE ALSO; Linux chcpu(8) -r, -p; NetBSD cpuctl(8) list, identify, ucode |
| NetBSD | -v meaning | psradm -v prints a message with the result of each attempted operation. NetBSD cpuctl -v makes output more verbose and, for ucode, also reports errors for microcode already present.Source: Solnix psradm(8) -v; NetBSD cpuctl(8) -v, ucode |
Everyday tasks
| Task | Solnix | Linux | NetBSD |
|---|---|---|---|
| take a CPU off-line | psradm -f processor_id | chcpu -d cpu-list | cpuctl offline cpu |
| bring a CPU on-line | psradm -n processor_id | chcpu -e cpu-list | cpuctl online cpu |
| stop a CPU taking device interrupts | psradm -i processor_id | — | cpuctl nointr cpu |
| allow a CPU to take interrupts | psradm -n processor_id | — | cpuctl intr cpu |
| list CPU state | see psrinfo(8) | see lscpu(1) | cpuctl list |
Standards
- POSIX: psradm is not a POSIX.1-2024 utility.
Writing portable scripts
- Wrap CPU on-line and off-line changes in a function that picks psradm, chcpu or cpuctl by what is installed. Flags, ID list syntax and state names all differ.
- Do not assume the same set of states elsewhere: spare, faulted and disabled are documented only for psradm.
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.