issue
内核驱动中创建了一个进程,用chrt命令设置调度策略和优先级时chrt命令无返回结果、系统无响应、直接自动重启。
debug
-
查看系统参数,结果如下:
cat /proc/sys/kernel/sched_rt_period_us
1000000
cat /proc/sys/kernel/sched_rt_runtime_us
-1 -
修改系统参数
echo 900000 > /proc/sys/kernel/sched_rt_runtime_us -
重新设置线程优先级
chrt -f --pid 1 <pid>
此时执行chrt命令时系统不再重启,用chrt -p <pid>查询进程优先级,已成功设置为SCHED_FIFO策略并且优先级为1。
analyze
sched_rt_runtime_us设为-1表示sched_rt_runtime_us==ched_rt_period_us,也就是rt运行时间没有限制。
个人猜测重启的原因是rt任务运行时间太长,导致系统一些关键的任务没有分配到运行时间,又或者是runtime时间占比太高,系统自动保护了。