<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://tech-pubs.net/wiki/index.php?action=history&amp;feed=atom&amp;title=Kernel%3A_Process_Scheduler</id>
	<title>Kernel: Process Scheduler - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://tech-pubs.net/wiki/index.php?action=history&amp;feed=atom&amp;title=Kernel%3A_Process_Scheduler"/>
	<link rel="alternate" type="text/html" href="https://tech-pubs.net/wiki/index.php?title=Kernel:_Process_Scheduler&amp;action=history"/>
	<updated>2026-04-19T20:44:43Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.44.2</generator>
	<entry>
		<id>https://tech-pubs.net/wiki/index.php?title=Kernel:_Process_Scheduler&amp;diff=468&amp;oldid=prev</id>
		<title>Raion at 23:55, 9 January 2026</title>
		<link rel="alternate" type="text/html" href="https://tech-pubs.net/wiki/index.php?title=Kernel:_Process_Scheduler&amp;diff=468&amp;oldid=prev"/>
		<updated>2026-01-09T23:55:24Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 23:55, 9 January 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l82&quot;&gt;Line 82:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 82:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Porting: BSD nicer for nice/priority; lacks IRIX&amp;#039;s unified interface and FRS. Real-time weaker than IRIX fixed-priority model.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Porting: BSD nicer for nice/priority; lacks IRIX&amp;#039;s unified interface and FRS. Real-time weaker than IRIX fixed-priority model.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Overall, IRIX scheduler reflects strong SVR4 real-time heritage with unique extensions (FRS, gang modes). illumos provides closest conceptual match; BSD covers nice semantics well but lacks advanced features. For replication, focus on vproc abstraction and capability checks. FRS is largely IRIX-specific and hard to port directly.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Overall, IRIX scheduler reflects strong SVR4 real-time heritage with unique extensions (FRS, gang modes). illumos provides closest conceptual match; BSD covers nice semantics well but lacks advanced features. For replication, focus on vproc abstraction and capability checks. FRS is largely IRIX-specific and hard to port directly.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Category: Kernel Documentation]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Raion</name></author>
	</entry>
	<entry>
		<id>https://tech-pubs.net/wiki/index.php?title=Kernel:_Process_Scheduler&amp;diff=459&amp;oldid=prev</id>
		<title>Raion: Created page with &quot;== Overview == The IRIX process scheduler is accessed primarily through the schedctl(2) system call, which provides a rich set of scheduling controls reflecting IRIX&#039;s historical focus on real-time, multiprocessor, and high-performance computing workloads. It supports:  Real-time fixed-priority scheduling (non-degrading) Traditional UNIX nice-value adjustments (timeshare) Process group and user-wide nice operations (BSD compatibility) CPU affinity control Scheduling mode...&quot;</title>
		<link rel="alternate" type="text/html" href="https://tech-pubs.net/wiki/index.php?title=Kernel:_Process_Scheduler&amp;diff=459&amp;oldid=prev"/>
		<updated>2026-01-04T03:39:46Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;== Overview == The IRIX process scheduler is accessed primarily through the schedctl(2) system call, which provides a rich set of scheduling controls reflecting IRIX&amp;#039;s historical focus on real-time, multiprocessor, and high-performance computing workloads. It supports:  Real-time fixed-priority scheduling (non-degrading) Traditional UNIX nice-value adjustments (timeshare) Process group and user-wide nice operations (BSD compatibility) CPU affinity control Scheduling mode...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Overview ==&lt;br /&gt;
The IRIX process scheduler is accessed primarily through the schedctl(2) system call, which provides a rich set of scheduling controls reflecting IRIX&amp;#039;s historical focus on real-time, multiprocessor, and high-performance computing workloads. It supports:&lt;br /&gt;
&lt;br /&gt;
Real-time fixed-priority scheduling (non-degrading)&lt;br /&gt;
Traditional UNIX nice-value adjustments (timeshare)&lt;br /&gt;
Process group and user-wide nice operations (BSD compatibility)&lt;br /&gt;
CPU affinity control&lt;br /&gt;
Scheduling mode selection (free/gang)&lt;br /&gt;
Full Frame Scheduler (FRS) interface for user-level hard real-time gangs&lt;br /&gt;
Legacy hooks for older scheduling extensions&lt;br /&gt;
&lt;br /&gt;
The implementation centers on vproc_t (virtual process) objects, which abstract scheduling attributes across processes/threads. Changes are applied via VPROC_ operations that update runqueue information safely.&lt;br /&gt;
== Key Functions ==&lt;br /&gt;
Main Interface (schedctl)&lt;br /&gt;
Single entry point dispatching commands:&lt;br /&gt;
&lt;br /&gt;
MPTS_RTPRI / MPTS_GETRTPRI: Set/get real-time priority (range NDPHIMAX..NDPLOMIN). Superuser required except for self-demotion or within normal range.&lt;br /&gt;
MPTS_SLICE: Set per-process time slice (ticks).&lt;br /&gt;
MPTS_RENICE / variants: Adjust nice values for process, process group, or all processes of a user (emulating BSD setpriority/getpriority semantics).&lt;br /&gt;
MPTS_SETHINTS: Initialize PRDA hints (obsolete pthread-related).&lt;br /&gt;
MPTS_SETMASTER: Set scheduling master PID (legacy).&lt;br /&gt;
MPTS_SCHEDMODE: Set scheduling mode (SGS_FREE, SGS_GANG, etc.).&lt;br /&gt;
MPTS_AFFINITY_*: Enable/disable/query CPU affinity.&lt;br /&gt;
MPTS_FRS_*: Full Frame Scheduler user interface (create, enqueue, yield, etc.).&lt;br /&gt;
&lt;br /&gt;
Most operations require CAP_SCHED_MGT capability.&lt;br /&gt;
Process List Scanner (plistscanner / plistscan)&lt;br /&gt;
Utility for user-wide or group-wide operations:&lt;br /&gt;
&lt;br /&gt;
Scans entire process table via procscan().&lt;br /&gt;
Handles renice/getnice across all matching processes.&lt;br /&gt;
Safe credential access via pcred_access().&lt;br /&gt;
&lt;br /&gt;
== Undocumented or IRIX-Specific Interfaces and Behaviors ==&lt;br /&gt;
Scheduling Parameters&lt;br /&gt;
&lt;br /&gt;
Real-time priorities: Fixed, non-degrading. Higher numerical value = higher priority.&lt;br /&gt;
NDPHIMAX (highest), NDPNORMMIN (boundary to timeshare), NDPLOMIN (lowest RT).&lt;br /&gt;
&lt;br /&gt;
Nice values: Traditional UNIX (-20..+19 translated via NZERO=20).&lt;br /&gt;
Time slice: Configurable in ticks (default system-wide).&lt;br /&gt;
&lt;br /&gt;
Scheduling Modes (via MPTS_SCHEDMODE)&lt;br /&gt;
&lt;br /&gt;
SGS_FREE: Default independent scheduling.&lt;br /&gt;
SGS_GANG: Gang scheduling (co-scheduling of related threads).&lt;br /&gt;
&lt;br /&gt;
CPU Affinity&lt;br /&gt;
Controlled via VPROC_SCHED_AFF; requires CAP_SCHED_MGT.&lt;br /&gt;
Frame Scheduler (FRS)&lt;br /&gt;
Hard real-time extension:&lt;br /&gt;
&lt;br /&gt;
User-level creation of scheduling &amp;quot;frames&amp;quot; (gangs).&lt;br /&gt;
Precise control over dispatch, yield, interrupt handling.&lt;br /&gt;
All FRS operations require CAP_SCHED_MGT.&lt;br /&gt;
Old FRS interface (MPTS_OLDFRS_*) returns ENOTSUP.&lt;br /&gt;
&lt;br /&gt;
Batch Job Restrictions&lt;br /&gt;
Processes in batch process groups (Miser) cannot be made real-time.&lt;br /&gt;
Permission Model&lt;br /&gt;
Heavy reliance on CAP_SCHED_MGT capability rather than simple uid==0 checks.&lt;br /&gt;
== Similarities to illumos and BSD Kernel Implementations ==&lt;br /&gt;
illumos (Solaris-derived)&lt;br /&gt;
Very close heritage (both SVR4 descendants):&lt;br /&gt;
&lt;br /&gt;
schedctl-like interface existed historically in Solaris.&lt;br /&gt;
Real-time fixed priorities (RT class).&lt;br /&gt;
PRIORITY/NICE control via priocntl(2).&lt;br /&gt;
Gang scheduling concepts (though Solaris used processor sets).&lt;br /&gt;
Frame Scheduler unique to IRIX; Solaris had alternative real-time extensions.&lt;br /&gt;
&lt;br /&gt;
Porting: illumos priocntl(2) system provides similar class/parameter control. FRS has no direct analog.&lt;br /&gt;
BSD (FreeBSD, NetBSD, OpenBSD)&lt;br /&gt;
More divergent:&lt;br /&gt;
&lt;br /&gt;
Nice via setpriority/getpriority (exact semantics matched by IRIX MPTS_RENICE_* variants).&lt;br /&gt;
Real-time via sched_setparam/sched_getparam (POSIX).&lt;br /&gt;
CPU affinity via cpuset(2).&lt;br /&gt;
No direct gang or frame scheduler equivalents.&lt;br /&gt;
No unified schedctl; separate syscalls.&lt;br /&gt;
&lt;br /&gt;
Porting: BSD nicer for nice/priority; lacks IRIX&amp;#039;s unified interface and FRS. Real-time weaker than IRIX fixed-priority model.&lt;br /&gt;
Overall, IRIX scheduler reflects strong SVR4 real-time heritage with unique extensions (FRS, gang modes). illumos provides closest conceptual match; BSD covers nice semantics well but lacks advanced features. For replication, focus on vproc abstraction and capability checks. FRS is largely IRIX-specific and hard to port directly.&lt;/div&gt;</summary>
		<author><name>Raion</name></author>
	</entry>
</feed>