How to set process with lowest priority?
Posted on In QAIn system, sometimes, we need backstage threads with very very low priority since it cannot preempt any normal process asks for CPU.
SCHED_IDLE class satisfies this requirement which has the priority lower than “nice=19” of CFS. Following code does this.
241 void set_idle_priority(void) {
242 struct sched_param param;
243 param.sched_priority = 0;
244 int s = pthread_setschedparam(pthread_self(), SCHED_IDLE, ¶m);
245 if (s != 0) handle_error("Pthread_setschedparam error!n");
246 }
Check the scheduler class after you set the process.
$ chrt -p 2370
pid 2370's current scheduling policy: SCHED_IDLE
pid 2370's current scheduling priority: 0
References:
1, https://www.kernel.org/doc/Documentation/scheduler/sched-design-CFS.txt
2, https://linux.die.net/man/2/sched_setscheduler