Fun with realtime scheduler (3)
Well we figured out how to give our process SCHED_FIFO priority last time (see here) right? But then I started wondering about multithreaded apps and if the call to sched_setscheduler() works for the complete process or only for the current thread.
So I created a small test program with a main loop and a small thread that raises its prio to SCHED_FIFO. The main thread runs at unmodified prio. The results?
1
2
3
4
5
benjamin@benjamin-laptop:~$ ps -eLO pid,tid,lwp
PID PID TID LWP S TTY TIME COMMAND
<snip>
24071 24071 24071 24071 S pts/9 00:00:00 ./a.out
24071 24071 24072 24072 S pts/9 00:00:00 ./a.out
So we have two thread ID's: 24071 and 24072. Here's the result from chrt:
1
2
3
4
5
6
benjamin@benjamin-laptop:~$ chrt -p 24071
pid 24071's current scheduling policy: SCHED_OTHER
pid 24071's current scheduling priority: 0
benjamin@benjamin-laptop:~$ chrt -p 24072
pid 24072's current scheduling policy: SCHED_FIFO
pid 24072's current scheduling priority: 99
So there we have our answer, the sched_setscheduler() call only works for the current TID, not for all threads...
This post is licensed under CC BY 4.0 by the author.