Agendamento de processos em tempo real no Linux


24

Eu tenho aprendido alguns conceitos de programação. Atualmente, meu entendimento até agora é o seguinte.

  • Existem processos em tempo real e processos em tempo não real.
  • Processos não em tempo real podem ter nicevalores para sua prioridade no intervalo de -20 a +20 . O valor positivo mais alto indica que o processo tem prioridade mais baixa.
  • Os processos em tempo real terão um valor de gentileza listado -conforme explicado nesta resposta aqui . Isso ocorre principalmente porque os processos em tempo real têm prioridades mais altas do que os processos em tempo não real e o valor da gentileza não se aplica a eles.
  • Agora, eu posso usar chrtpara ver os atributos em tempo real de um processo.

Para um processo em tempo real, o chrtresultado é dado como,

chrt -p 5
pid 5's current scheduling policy: SCHED_FIFO
pid 5's current scheduling priority: 99

Como podemos ver no processo 5 , a prioridade é 99, que é a mais alta. Além disso, a política de agendamento éSCHED_FIFO

Agora, para um processo não em tempo real, o chrtresultado é dado como,

chrt -p 22383
pid 22383's current scheduling policy: SCHED_OTHER
pid 22383's current scheduling priority: 0

Como podemos ver no processo 22383 , a prioridade é 0 e a política de agendamento é SCHED_OTHER.

Questões

  1. É possível fazer qualquer processo como processo em tempo real?
  2. É possível definir outro algoritmo de agendamento que SCHED_OTHERnão seja um processo em tempo não real?
  3. A partir daqui , também vejo que eu poderia modificar o atributo para um processo em execução como,

    chrt -p prio pid
    

    Além disso, vejo chrt -ma lista de algoritmos de agendamento. O comando me dá a saída como,

    SCHED_OTHER min/max priority    : 0/0
    SCHED_FIFO min/max priority     : 1/99
    SCHED_RR min/max priority       : 1/99
    SCHED_BATCH min/max priority    : 0/0
    SCHED_IDLE min/max priority     : 0/0
    

    Agora, como sugerido acima, se eu definir chrt -p 55 22383qual algoritmo será usado?

Respostas:


19

Questão 1

É possível que um usuário use a prioridade em tempo real para um processo também. Esta configuração pode ser definida a partir do /etc/security/limits.confarquivo Eu vejo o conteúdo abaixo nesse arquivo.

# /etc/security/limits.conf
#
#Each line describes a limit for a user in the form:
#
#<domain>        <type>  <item>  <value>

Se verificarmos a seção do item, veremos a entrada abaixo, que permite definir uma prioridade em tempo real para os usuários.

#        - rtprio - max realtime priority

Pergunta 2 e Pergunta 3

Para definir a política de agendamento SCHED_FIFO, digite:

chrt -f -p [1..99] {pid}

Para definir a política de agendamento SCHED_RR, digite:

chrt -r -p [1..99] {pid}

Portanto, para responder à pergunta 3, devemos verificar os algoritmos de agendamento disponíveis e as prioridades usando o chrt -mcomando e, em seguida, usar qualquer algoritmo de agendamento que atenda às nossas necessidades. Para definir prioridades diferentes, poderíamos usar os comandos acima.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.