Какой планировщик процессов использует моя система Linux?

10

Я не совсем уверен, является ли stackoverflow или serverfault форумом для этого вопроса, но я попробую здесь.

Есть ли какая-то команда, которую я могу использовать, или файл, который я могу проверить, чтобы узнать, какой планировщик процессов я использую в моей системе Linux? Я не ищу планировщика ввода-вывода, но планировщик процессов и, пожалуйста, не обращайтесь к руководствам или инструкциям по поводу того, что такое планировщик, я просто спрашиваю, есть ли команда или файл, который я могу запустить / проверьте, чтобы увидеть это. Я мог бы проверить документацию для своего ядра, но опять же, мне просто интересно, есть ли команда или файл, который я могу проверить.

Я мог бы быть немного излишним выше, но это потому, что сообщения, которые я видел, люди, кажется, путают планировщик процессов с планировщиком ввода-вывода, и они, кажется, не отвечают на настоящий вопрос, просто предоставляют ссылки на то, что планировщик это не то, что я здесь, так что извинения, если вышеупомянутые комментарии звучат грубо.

превышать
источник
2
Вы подразумеваете, что в Linux как-то должны быть разные алгоритмы планировщика, которые можно выбрать среди других. Что заставляет вас думать, что это так?
Стефан Шазелас
Я не думаю, и я не думаю, что вы можете изменить планировщик процесса в режиме реального времени. Я спрашиваю, есть ли команда для проверки или файл для чтения содержимого, чтобы увидеть, какая из них активна. Но если вы хотите, я думаю, вы можете выбрать O (1) или O (n), если вы действительно этого хотите.
превышать
1
AFAIK в ядре Linux 2.6.23. Мы изменяем планировщик процессов с O (1) на CFS, и у нас нет другого планировщика для процессов, которые могут быть динамически изменены, как для блочного планировщика ввода-вывода.
Артур Шимчак
2
@ZanLynx Вместо этого предложите закрыть старый вопрос как дубликат этого, потому что этот вопрос уже получает более качественное лечение.
Златовласка

Ответы:

7

Есть ли какая-то команда, которую я могу использовать, или файл, который я могу проверить, чтобы узнать, какой планировщик процессов я использую в моей системе Linux?

Нет, потому что, в отличие от WRT для планировщика ввода-вывода, существует только одна возможность : CFS («Совершенно честный планировщик»), который включает возможности в реальном времени. CFS назван частично, чтобы отличать его от планировщика «O (1)» , который, как отмечено в этой статье, был заменен в версии 2.6.23.

Так что если у вас есть ядро, в котором вы не уверены, просто проверьте номер версии.

лютик золотистый
источник
Спасибо за ваш ответ, тогда я думаю, что нет файла, который я мог бы проверить, чтобы выяснить это, не обращаясь к документации, было бы удобно иметь возможность быстро найти планировщик, используемый для лучшего обзора деталей параметров используется в ядре, используемом системой.
превышать
1
Я не думаю, что есть такая вещь, потому что она не отражает какую-либо опцию конфигурации или «используемый параметр» и т. Д. Есть только один возможный планировщик, планировщик; в настоящее время его называют «абсолютно честным планировщиком», и это проблема абстрактного дизайна, одна из многих, которые вносят вклад в ядро. Как правило, они задокументированы в источнике и т. Д. Таким образом, вопрос является излишним uname -r.
Златовласка
0

Пытаться:

cat /proc/config.gz | gunzip > ~/running.config
nano -w ~/running.config
CTRL + W SCHEDULE

Смотрите здесь: Глава 14: Настройка

eyoung100
источник
У меня нет файла конфигурации ядра, тогда я могу это проверить. Я использую систему Redhat с двоичным RPM, который устанавливает ядро.
превышать
1
При поиске через него единственными переменными, относящимися к планировщикам процессов, являются CONFIG_SCHED_SMT = y, CONFIG_SCHED_MC = y и CONFIG_NET_SCHED = y, которые на самом деле не говорят мне много
превышают
1
CONFIG_SCHED_SMT = y Планировщик гиперпоточности включен, CONFIG_SCHED_MC = y Поддержка нескольких ядер включена, CONFIG_NET_SCHED = y QoS / FairQueing включен для работы в сети. Как намекает Златовласка, его ответ правильный.
eyoung100
4
Почему не просто zgrep SCHEDULE /proc/config.gz?
Terdon
1
Я понимаю, моя точка зрения была в том, что вы использовали излишне запутанный подход.
Terdon
0

cat /proc/config.gz | gunzip | nano -(или cat /proc/config.gz | gunzip | gedit -, в этом отношении) - лучшая альтернатива ответу eyoung100, который не требует "перезарядки" во временный файл.
Изменить: еще проще - zcat /proc/config.gz | nano -илиzcat /proc/config.gz | gedit -

Или, как @terdon предложил в комментариях к этому ответу, используйте zgrep. Я просто рекомендую другую строку поиска:

zgrep "CONFIG_SCHED_" /proc/config.gz

Например CONFIG_SCHED_y, если вы видите: ядро настроено на использование планировщика MuQSS. Тем не менее , в этом нет никакой гарантии , что она есть . Arch Wiki предлагает :

$ dmesg | grep -i muqss
...
MuQSS CPU scheduler v0.120 by Con Kolivas.
Marc.2377
источник