Que prioridade usar chamando sched_setscheduler

1

Eu estou escrevendo um servidor que eu não quero preempted por qualquer outro processo de usuário ou processo de kernel de "baixa prioridade". Estou usando código assim:

struct sched_param sched_param;
memset(&sched_param, 0, sizeof(sched_param));
sched_param.sched_priority = SOME_PRIORITY;

if(-1 == sched_setscheduler(0, SCHED_FIFO, &sched_param)) {
  // ...

Meu problema é que quando eu defino SOME_PRIORITY como 99 (o valor max), parece que eu deixo o processo do planejador morrer de fome e meu sistema rapidamente se torna inutilizável (o processo do servidor tem um loop de busywait no seu core-- Eu não tenho controle sobre esse aspecto, é uma biblioteca de terceiros).

Então, minha pergunta é: que valor para SOME_PRIORITY eu posso usar para permitir preempção apenas pelo agendador (e possivelmente algum pequeno subconjunto de serviços do kernel)?

    
por laslowh 29.01.2013 / 15:50

0 respostas