Как настроить планировщик Linux, чтобы он не останавливал процесс Linux?

Если я у меня есть ЦП с 4 ядрами (например, Intel I5), и мне нужно, чтобы процесс работал исключительно на одном ядре, не прерываясь планировщиком Linux, даже на несколько миллисекунд.

Что мне нужно делать?

Чтобы дополнить этот вопрос, я провел исследование, поэтому у меня есть теория.

  1. Установите привязку процесса к ЦП для использования исключительно того ядра, которое я хочу. И установите все остальные процессы, чтобы избежать этого ядра.
  2. Настройте планировщик Linux на использование политики FIFO для процесса, это означает, что процесс не будет остановлен при освобождении ЦП.
  3. Установите для всех остальных процессов режим ожидания, чтобы избежать конкуренции с политикой FIFO.
  4. Установите параметр ядра isolcpus, чтобы ядро ​​не использовало эти ядра ЦП.

Я не уверен, даже если можно избежать остановки процесса, потому что, если я понимаю планировщик Linux, они предназначены для зависания процесса, чтобы избежать монополизации ядра ЦП.

Этот вопрос важен, потому что в некоторых исследовательских и научных приложениях необходимо запустить виртуальную машину, инкапсулирующую приложение реального времени, поэтому, если Linux остановит виртуальную машину, чтобы проверить список процессов или освободить ядро ​​ЦП для другого процесс, приложение также будет остановлено.

-2
26.08.2017, 14:56
1 ответ

Мне нужно, чтобы процесс выполнялся исключительно на одном из этих ядер, не прерываясь планировщиком Linux даже на несколько миллисекунд.

Это невозможно (с пользовательскими приложениями). Linux (как и большинство обычных операционных систем) использует упреждающеепланирование.

Тем не менее, читайте больше о Linux реального времении Xenomai

(конечно, часть ядра часто не вытесняется, но вы не хотите писать модуль ядра для такой цели)

На практике, я уверен, вы сможете настроить свою систему так, чтобы вытеснение было незначительным для ваших целей сравнительного анализа. Накладные расходы планирования (или могут быть настроены так), вероятно, в микросекундах, а не в миллисекундах.

(в противном случае отказаться от использования Linux)

См. sched(7)

0
28.01.2020, 05:17

Теги

Похожие вопросы