User Tools

Site Tools


realtime:documentation:technical_basics:preemption_models

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
realtime:documentation:technical_basics:preemption_models [2023/10/02 09:40]
costa.shul
realtime:documentation:technical_basics:preemption_models [2023/10/03 05:13] (current)
costa.shul use ndash
Line 17: Line 17:
 are available only with the PREEMPT_RT patch. are available only with the PREEMPT_RT patch.
  
-  * **No Forced Preemption (server):** //The traditional Linux preemption model, geared towards throughput//​ . System call returns and interrupts are the only preemption points. +  * **No Forced Preemption (server)** ​– //the traditional Linux preemption model, geared towards throughput//​ . System call returns and interrupts are the only preemption points. 
-  * **Voluntary Kernel Preemption (Desktop):** //This option ​reduces the latency of the kernel by adding more "​explicit preemption points"​ to the kernel code [. . . ] at the cost of slightly lower throughput//​ . In addition to explicit preemption points, system call returns and interrupt returns are implicit preemption points. +  * **Voluntary Kernel Preemption (Desktop)** ​– // reduces the latency of the kernel by adding more "​explicit preemption points"​ to the kernel code [. . . ] at the cost of slightly lower throughput//​ . In addition to explicit preemption points, system call returns and interrupt returns are implicit preemption points. 
-  * **Preemptible Kernel (Low-Latency Desktop):** //This option ​reduces the latency of the kernel by making all kernel code (that is not executing in a critical section) preemptible//​. An implicit preemption point is located after each preemption disable section. +  * **Preemptible Kernel (Low-Latency Desktop)** ​– //reduces the latency of the kernel by making all kernel code (that is not executing in a critical section) preemptible//​. An implicit preemption point is located after each preemption disable section. 
-  * **Preemptible Kernel (Basic RT):** This preemption model resembles the "​Preemptible Kernel (Low-Latency Desktop)"​ model. Besides the properties mentioned above, threaded interrupt handlers are forced (as when using the kernel command line parameter ''​threadirqs''​). This model is mainly used for testing and debugging of substitution mechanisms implemented by the PREEMPT_RT patch. +  * **Preemptible Kernel (Basic RT)** – resembles the "​Preemptible Kernel (Low-Latency Desktop)"​ model. Besides the properties mentioned above, threaded interrupt handlers are forced (as when using the kernel command line parameter ''​threadirqs''​). This model is mainly used for testing and debugging of substitution mechanisms implemented by the PREEMPT_RT patch. 
-  * **[[realtime:​documentation:​technical_details:​start|Fully Preemptible Kernel (RT)]]:** All kernel code is preemptible except for a few selected critical sections. Threaded interrupt handlers are forced. Furthermore several substitution mechanisms like sleeping spinlocks and rt_mutex are implemented to reduce preemption disabled sections. Additionally,​ large preemption disabled sections are substituted by separate locking constructs. This preemption model has to be selected in order to obtain real-time behavior.+  * **[[realtime:​documentation:​technical_details:​start|Fully Preemptible Kernel (RT)]]** ​– all kernel code is preemptible except for a few selected critical sections. Threaded interrupt handlers are forced. Furthermore several substitution mechanisms like sleeping spinlocks and rt_mutex are implemented to reduce preemption disabled sections. Additionally,​ large preemption disabled sections are substituted by separate locking constructs. This preemption model has to be selected in order to obtain real-time behavior.
  
 References: References:
   * [[https://​git.kernel.org/​pub/​scm/​linux/​kernel/​git/​stable/​linux.git/​tree/​kernel/​Kconfig.preempt|kernel/​Kconfig.preempt]]   * [[https://​git.kernel.org/​pub/​scm/​linux/​kernel/​git/​stable/​linux.git/​tree/​kernel/​Kconfig.preempt|kernel/​Kconfig.preempt]]
  
realtime/documentation/technical_basics/preemption_models.1696239608.txt.gz · Last modified: 2023/10/02 09:40 by costa.shul