Планирование процессов в реальном времени в Linux

24

Я изучал некоторые концепции планирования. В настоящее время мое понимание таково, как показано ниже.

  • Существуют процессы в реальном времени и не в реальном времени.
  • Процессы не в реальном времени могут иметь niceзначения своего приоритета в диапазоне от -20 до +20 . Более высокое положительное значение указывает, что процесс имеет более низкий приоритет.
  • Процессы реального времени будут иметь значение точности, как -описано в этом ответе здесь . Это происходит главным образом потому, что процессы в реальном времени имеют более высокие приоритеты, чем процессы не в реальном времени, и ценность для них неприменима.
  • Теперь я могу использовать chrtатрибуты процесса в реальном времени.

Для процесса в реальном времени, chrtвывод дает как,

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

Как мы видим для процесса 5 , приоритет - 99, который является самым высоким. Кроме того, политика планированияSCHED_FIFO

Теперь, для процесса не в реальном времени, chrtвывод дает как,

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

Как мы видим для процесса 22383 , приоритет равен 0, а политика планирования - SCHED_OTHER.

Вопросов

  1. Могу ли я сделать какой-либо процесс в режиме реального времени?
  2. Могу ли я установить какой-либо другой алгоритм планирования, отличный от SCHED_OTHERпроцесса не в реальном времени?
  3. Из здесь , я вижу , что я мог бы изменить атрибут для запущенного процесса , как,

    chrt -p prio pid
    

    Кроме того, я вижу, chrt -mдает мне список алгоритмов планирования. Команда дает мне вывод как,

    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
    

    Теперь, как предложено выше, если я установлю, chrt -p 55 22383какой алгоритм будет использоваться?

Рамеш
источник

Ответы:

19

Вопрос 1

Пользователь также может использовать приоритет процесса в реальном времени. Эта конфигурация может быть установлена ​​из /etc/security/limits.confфайла. Я вижу ниже содержание в этом файле.

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

Если мы проверим раздел элемента, мы увидим запись ниже, которая позволяет установить приоритет в реальном времени для пользователей.

#        - rtprio - max realtime priority

Вопрос 2 и Вопрос 3

Чтобы установить политику планирования SCHED_FIFO, введите:

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

Чтобы установить политику планирования SCHED_RR, введите:

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

Таким образом, чтобы ответить на вопрос 3, мы должны проверить доступные алгоритмы планирования и приоритеты, используя chrt -mкоманду, а затем использовать любой алгоритм планирования, который соответствует нашим потребностям. Чтобы установить разные приоритеты, мы могли бы использовать команды, как указано выше.

Рамеш
источник