Как я могу проверить конфигурацию вытеснения моего ядра?

11

Я хочу проверить, является ли мое ядро ​​Linux приоритетным или не приоритетным. Как я могу проверить это с помощью команды, например uname -a?

daehee
источник

Ответы:

10

Независимо от того, является ли ядро ​​вытесняющим или нет, зависит от того, что вы хотите выгрузить, как в ядре Linux, есть разные вещи, которые могут включать / отключать вытеснение отдельно.

Если в вашем ядре включено CONFIG_IKCONFIGи CONFIG_IKCONFIG_PROCвключено, вы можете узнать конфигурацию с вытеснением через /proc/config.gz(если у вас ее нет, некоторые дистрибутивы поставляют конфигурацию ядра /boot):

$ gzip -cd /proc/config.gz | grep PREEMPT
CONFIG_TREE_PREEMPT_RCU=y
CONFIG_PREEMPT_RCU=y
CONFIG_PREEMPT_NOTIFIERS=y
# CONFIG_PREEMPT_NONE is not set
# CONFIG_PREEMPT_VOLUNTARY is not set
CONFIG_PREEMPT=y
CONFIG_PREEMPT_COUNT=y
# CONFIG_DEBUG_PREEMPT is not set
# CONFIG_PREEMPT_TRACER is not set

Если у вас есть CONFIG_IKCONFIG, но нет CONFIG_IKCONFIG_PROC, вы все равно можете получить его из образа ядра с помощью extract-ikconfig.

Крис Даун
источник
Я сделал модуль ядра в малине, диалог с внешним датчиком, чтобы запросить температуру. Чтобы общаться с датчиком, я должен установить вход и выход gpio pins в течение заданного промежутка времени (в мс). и модуль работает нормально. поэтому модули ядра не будут вытеснены планировщиком другими процессами, так как, если он будет вытеснен, время будет неправильным, а результат, полученный от датчика, будет неправильным.
mikmik
2

Преобразуемое ядро ​​(рабочий стол с низкой задержкой) PREEMPTпомечено в имени своей версии ( uname -a). Это также появляется в /proc/versionи в строке «version magic», используемой для определения, можно ли / нельзя загружать модули в данное ядро, например

mymodule: version magic '3.4.35 mod_unload ARMv7 p2v8 ' 
              should be '3.4.35 preempt mod_unload ARMv7 p2v8 '

Таких тегов не существует CONFIG_PREEMPT_VOLUNTARY, afaik.

PypeBros
источник