User Tools

Site Tools


realtime:documentation:known_limitations

Differences

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

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
realtime:documentation:known_limitations [2016/12/01 15:16]
bigeasy
realtime:documentation:known_limitations [2023/10/02 20:16] (current)
costa.shul - elixir
Line 1: Line 1:
 ====== Known Limitations ====== ====== Known Limitations ======
-Some environments are currently not working well with Preempt-RT. Here is an overview of known limitations and workarounds.+ 
 +Some environments are currently not working well with Preempt-RT. Here is an overview of known limitations and workarounds. ​[[realtime:​communication:​send_rt_patches|Patches]] fixing the known limitations are welcome! 
 + 
 +===== Disabled CONFIG_ options ===== 
 + 
 +Several features are disabled by CONFIG_PREEMPT_RT=y because of incompatibility. 
 + 
 +<WRAP center round todo 80%> 
 +A more detailed information,​ why a specific config option is deactivated,​ is required! 
 +</​WRAP>​ 
 + 
 + 
 +Disabled config options: 
 + 
 +  * CONFIG_TRANSPARENT_HUGEPAGE 
 +  * CONFIG_DRM_I915 
 +  * CONFIG_NUMA_BALANCING 
 +  * CONFIG_LEDS_TRIGGER_CPU 
 +  * CONFIG_KVM_MPIC (powerpc) 
 +  * CONFIG_OPROFILE (until v5.12-rc2-rt1) 
 +  * CONFIG_XEN (until v4.18-rc8-rt1) 
 +  * CONFIG_X86_POWERNOW_K8 (until v5.2.21-rt13) 
 +  * CONFIG_BCACHE (until v5.6.17-rt10) 
 +  * CONFIG_HIGHMEM (mips, powerpc, until v5.10-rc1-rt2) 
 +  * CONFIG_RT_GROUP_SCHED (until v5.15-rc2-rt3) 
 +  * CONFIG_CPUMASK_OFFSTACK (until 5.4.5-rt3)
  
 ===== Platforms ===== ===== Platforms =====
Line 18: Line 43:
 ===== Runtime ===== ===== Runtime =====
 ==== Code live patching on ARM ==== ==== Code live patching on ARM ====
-ARM is using stop_machine() while patching assembly opcodes at run time which can cause high latencies. +ARM is using ''​stop_machine()'' ​while patching assembly opcodes at run time which can cause high latencies. 
-This means "jump labels"​ support is deactivated because ​the may be used for instance by changing scheduler options.+This means "jump labels"​ support is deactivated because ​it may be used for instance by changing scheduler options.
 kprobe and kgdb is also patching code at run time but are not disabled. They should only be used in a development environment for debug so it should be safe. kprobe and kgdb is also patching code at run time but are not disabled. They should only be used in a development environment for debug so it should be safe.
 +
 +==== pthread_cond_{wait|signal} ====
 +The //​pthread_cond_t//​ variable in glibc implementation contains a mutex. This mutex can not be initialized as PI. 
 +More information can be found in [[https://​sourceware.org/​bugzilla/​show_bug.cgi?​id=11588|glibc'​s bug report]].
 +
 +==== EFI ====
 +[[https://​elixir.bootlin.com/​linux/​latest/​A/​ident/​CONFIG_EFI_DISABLE_RUNTIME|EFI runtime services are disabled]] because using them may case high latencies. This includes accessing the RTC device or updating the variables.
 +If you need to use the EFI runtime services add **efi=runtime** to the kernel command line.
 +
 +==== Memory compaction ====
 +With CONFIG_COMPACTION=y the kernel may change the physical address for an existing virtual address. This may lead to a minor page fault and may happen even to pages which are protected with //​mlock()//​.
 +In order to avoid memory compaction on //mlock()// pages exclude them via 
 +
 +  echo 0 > /​proc/​sys/​vm/​compact_unevictable_allowed
realtime/documentation/known_limitations.1480605392.txt.gz · Last modified: 2016/12/01 15:16 by bigeasy