嵌入式 Linux 实时性能优化与测量
1. 可抢占内核锁
在实时操作系统的优化中,让大多数内核锁可抢占是一项关键的改进。传统的自旋锁存在问题,它是一种忙等待互斥锁,在竞争情况下无需上下文切换,短时间持有锁时效率很高,但持有锁的线程不能被抢占,否则可能导致死锁。在主流 Linux 中,锁定自旋锁会禁用内核抢占,这可能使低优先级线程持有锁时阻止高优先级线程调度。
为了解决这个问题,PREEMPT_RT 采用的解决方案是将几乎所有自旋锁替换为 RT - mutexes。虽然互斥锁比自旋锁慢,但它是完全可抢占的,并且实现了优先级继承,不会出现优先级反转问题。
2. 获取 PREEMPT_RT 补丁
RT 开发者并非为每个内核版本都创建补丁集,平均每两个内核版本创建一次。目前支持的最近内核版本如下:
| 内核版本 |
| ---- |
| 4.9 - rt |
| 4.8 - rt |
| 4.6 - rt |
| 4.4 - rt |
| 4.1 - rt |
| 4.0 - rt |
| 3.18 - rt |
| 3.14 - rt |
| 3.12 - rt |
| 3.10 - rt |
| 3.4 - rt |
| 3.2 - rt |
补丁可从 https://www.kernel.org/pub/linux/kernel/projects/rt 获取。如果你使用 Yocto Project,已有内核的 rt 版本;若从其他地方获取内核,可能已应用 PREEMPT_RT 补丁,若未应用则需自行
超级会员免费看
订阅专栏 解锁全文
830

被折叠的 条评论
为什么被折叠?



