Linux планирует готовые к выполнению потоки по классу, приоритету и доступным CPU. Обычные задачи делят процессор справедливо с учётом весов, а real-time и deadline имеют другие правила.
Как в Linux распределяется процессорное время между процессами?
Linux планирует готовые к выполнению потоки по классу, приоритету и доступным CPU. Обычные задачи делят процессор справедливо с учётом весов, а real-time и deadline имеют другие правила.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Linux планирует готовые к выполнению потоки по классу, приоритету и доступным CPU. Обычные задачи делят процессор справедливо с учётом весов, а real-time и deadline имеют другие правила.
На решение влияют nice, cgroups, affinity и число runnable-задач. Ожидающий I/O поток не расходует процессор как непрерывно вычисляющий.
В современных ядрах fair-класс использует развитие EEVDF вместо прежнего CFS: учитываются виртуальное время, задолженность и deadline выбора. Конкретное поведение зависит от версии ядра и настроек. Равное число процессов не означает равную долю CPU для каждого приложения с разным числом потоков.
Источник: docs.kernel.org.