Processamento de processos em tempo real no Linux

22

Eu tenho aprendido alguns conceitos de agendamento. Atualmente meu entendimento até agora é como abaixo.

  • Existem processos em tempo real e processos em tempo não real.
  • Processos em tempo não real podem ter valores de nice para sua prioridade no intervalo de -20 para +20 . O valor positivo mais alto indica que o processo tem menor prioridade.
  • Os processos em tempo real terão um valor de gentile listado como - , 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 de gentileza não se aplica a eles.
  • Agora, posso usar chrt para ver os atributos em tempo real de um processo.

Para um processo em tempo real, o chrt fornece a saída como

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

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

Agora, para um processo que não seja em tempo real, o chrt fornece a saída como

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

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

Perguntas

  1. É possível que eu faça algum processo como um processo em tempo real?
  2. É possível para mim definir outro algoritmo de agendamento que SCHED_OTHER para um processo em tempo não real?
  3. De aqui , 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 -m me fornecer a 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 22383 qual algoritmo será usado?

por Ramesh 10.09.2014 / 19:33

1 resposta

18

Pergunta 1

É possível que um usuário use a prioridade em tempo real para um processo também. Essa configuração pode ser definida no arquivo /etc/security/limits.conf . 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, vemos a entrada abaixo, que permite definir uma prioridade em tempo real para os usuários.

#        - rtprio - max realtime priority

Questão 2 e Questão 3

Para definir a política de agendamento para SCHED_FIFO , insira:

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

Para definir a política de agendamento para SCHED_RR , insira:

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

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

    
por 10.09.2014 / 19:54