https://wiki.linuxfoundation.org/realtime/rtl/start https://wiki.linuxfoundation.org/realtime/rtl/all_topics https://www.embedded-software-engineering.de/entwicklung-einer-linux-realtime-applikation-a-b862ea485a877e6a7e2f25edd98f5ef7/ ====== Learning ====== https://realtime-linux.org/a-checklist-for-real-time-applications-in-linux/ https://bootlin.com/training/preempt-rt/ ====== Core partitioning ====== User-space partitioning, core isolation, NO_HZ_FULL Dual-OS partitioning, using a POSIX RTOS in some cores, over a hypervisor https://yosh.ke.mu/raspberry_pi_isolating_cores_in_linux_kernel ====== Multitasking ====== In user space: * Process (fork) * Thread (pthread_create) In kernel: * Kernel thread (kthreadd) ====== Scheduler ====== sched_class stop > dl > rt > cfs > idle (e.g. rt threads will run with higher priority than cfs threads) (stop and idle scheduling class are not accessible for user space applications) rt includes SCHED_FIFO and SCHED_RR policies. dl includes SCHED_DEADLINE policy (augmented EDF). ====== Utilities ====== * chrt * taskset ==== Linux specific APIs ==== * sched_setattr * sched_setaffinity * CPU_SET * pthread_setaffinity_np ==== POSIX realtime APIs ==== * sched_setscheduler * ... ==== Benchmarking ==== Latency measurement with **cyclictest** (results for SCHED_FIFO). Sources of latency: * Kernel system call * ISR * Kernel locks * Priority inversions * Timers * Page faults **Ftrace** **Kernel Shark** **LLTng**