背景
以前做项目使用Raspberry PI CM3 + RT Preempt做实时控制,这部分需要对系统和任务进行特殊的配置。
系统补丁
需要先将原内核替换为抢占式内核,这个在树莓派官方github内就有相应的rt版本内核,找步骤替换即可。
CPU隔离
CPU隔离就是将树莓派的四个CPU的其中一个从Linux系统的调度名单中划去,以便为我们实时任务服务。
修改/boot/cmdline.txt
1 | nano /boot/cmdline.txt |
验证:
1 | apt install systbench |
结果:
1 | Tasks: 126 total, 2 running, 83 sleeping, 0 stopped, 0 zombie |
在4线程CPU benchmark测试下,CPU3未被调度。
用户隔离
为实时进程添加新用户,并禁用登录:
1 | adduser rttask |
SYSTEMD配置
几个注意点:
- User=rttask 设置用户隔离
- Nice=-20 设置用户态最高优先级
- CPUAffinity=3 设置CPU亲和性
- 资源限制
文件位置:
1 | /lib/systemd/system/rttask.service |
内容:
1 | [Unit] |
启动、自启动命令:
1 | systemctl daemon-reload |
其它命令:
1 | systemctl stop rttask |