安装了带实时补丁的linux内核后,就可以让指定的进程或者线程拥有实时优先级。有一些系统调用可以在代码中来精细控制线程和进程的优先级,如果不方便修改代码,则可以通过chrt命令来达到这个目的。
关于实时优先级和实时调度算法,可以参考linux文档:http://man7.org/linux/man-pages/man7/sched.7.html。简而言之,linux中有五种调度策略:
非实时调度:SCHED_OTHER, SCHED_IDLE, SCHED_BATCH
实时调度:SCHED_FIFO, SCHED_RR
chrt这个命令只有在打了实时补丁的内核中可以使用,在非实时内核中运行会报类似no permission的错。
1、查看进程的优先级和调度策略(应该显示的是主线程的优先级和调度策略):
chrt -p [pid]
(这里的非实时进程优先级为0,实时进程优先级1~99,数值越大优先级越高)
2、查看进程的所有线程的优先级和调度策略:
chrt -a -p [pid]
3、查看每种调度策略对应的优先级范围:
chrt -m
4、设置进程的调度策略(可以看到只有主线程变成了实时调度):
chrt -f -p [prio] [pid] // SCHED_FIFO
chrt -r -p [prio] [pid] // SCHED_RR
5、如果