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时间占比太高,系统自动保护了。
在内核驱动中创建进程并使用chrt命令设置SCHED_FIFO调度策略和高优先级时,系统出现无响应并自动重启。问题可能源于rt任务运行时间过长,影响了系统关键任务的执行。通过调整sched_rt_runtime_us参数限制rt任务的运行时间,系统不再重启,进程优先级成功设置。
1805






