Checklist¶
Done¶
- Install Ubuntu 22.04.3 LTS
- Local Yocto Build: Salamander4
- Linux Kernel Configuration with Xenomai
- Boot Salamander4 in QEMU under native Ubuntu
- Configured bridge for QEMU
- Connected LasalClass2 with [Salamander 4]
- Enabled access to the vsocket for guest
- trace-cmd and kernelshark with Salamander4 as guest
- Used the Xenomai test suite: latency -T 60`
- Isolated host CPU for guest
- Latency got better after isolation
- Analyze Host and Guest Processes
- Latency got much better after rt-patch
- Latency got even better after Intels RT_Performance_Tuning_Best_Practice_KVM_VM.pdf: xenomai_compare_latmax.md
- Move robot motors with salamander hardware
- Robotic application
- Test latency with hardware and virtualization
Appendix: Hardware and OS configuration checklist¶
Real-time programming with Linux
This serves as a non-exhaustive starting point on the things to check for the hardware and OS. The list is constructed based on my survey of the literature (mostly conference talks, with some internet articles). Remember to always validate the final scheduling latency with something like cyclictest!
- Disable SMT
- Disable dynamic frequency scaling
- Check for the presence of system management interrupts; if possible, consult with the hardware vendor (remember to always verify their claims)
- Understand the NUMA of the computer and minimize cross-node memory access within the RT process
- Disable RT throttling
- Disable any unneeded RT services/daemons already running on the OS
- Possibly setup isolcpu (or use cgroups to accomplish the same thing)
- [] Look into kernel configurations that may affect RT performance such as CONFIG_LOCKUP_DETECTOR, CONFIG_DETECT_HUNG_TASK, CONFIG_NO_HZ, CONFIG_HZ_*, CONFIG_NO_HZ_FULL, and possibly more.
- [] Configure the memory lock and rtprio permissions in /etc/security/limits.d.
- Do the latency_reduction_steps.md
- []