linux实时进程的优先级是1到99,普通进程的优先级是100到139,数值越低,优先级越高。
Linux内核的三种调度方法:
1、SCHED_NORMAL 分时调度策略
2、SCHED_FIFO 实时调度策略,先到先服务
3、SCHED_RR 实时调度策略,时间片轮转
CPU分配给实时进程的时间是0.95秒,可通过如下查看:
cat /proc/sys/kernel/sched_rt_runtime_us
950000
cat /proc/sys/kernel/sched_rt_period_us
1000000
也可通过如下debug:
echo 0
> /sys/kernel/tracing/tracing_on
echo 0
> /sys/kernel/tracing/events/enable
echo > /sys/kernel/tracing/trace
echo
30720
> /sys/kernel/tracing/buffer_size_kb
echo
1
> /sys/kernel/tracing/events/sched/enable
echo
1
> /sys/kernel/tracing/events/irq/enable
echo
1
> /sys/kernel/tracing/events/preemptirq/enable
echo
1
> /sys/kernel/tracing/tracing_on
cat /sys/kernel/tracing/trace > /trace.txt
task信息:
mkdir /sys/kernel/tracing/instances/sched write /sys/kernel/tracing/instances/sched/buffer_size_kb 30720 write /sys/kernel/tracing/instances/sched/events/sched/enable 1 write /sys/kernel/tracing/instances/sched/tracing_on 1
抓preempt信息:
mkdir /sys/kernel/tracing/instances/preempt write /sys/kernel/tracing/instances/preempt/buffer_size_kb 10240 write /sys/kernel/tracing/instances/preempt/events/preemptirq/enable 1 write /sys/kernel/tracing/instances/preempt/tracing_on 1
抓irq信息:
mkdir /sys/kernel/tracing/instances/irq write /sys/kernel/tracing/instances/irq/buffer_size_kb 10240 write /sys/kernel/tracing/instances/irq/events/irq/enable 1 write /sys/kernel/tracing/instances/irq/tracing_on 1