Jak mogę sprawdzić konfigurację blokowania jądra?

11

Chcę sprawdzić, czy moje jądro Linuksa działa zapobiegawczo, czy nie. Jak mogę to sprawdzić za pomocą polecenia, czegoś takiego jak uname -a?

Daehee
źródło

Odpowiedzi:

10

To, czy jądro ma charakter zapobiegawczy, zależy od tego, co chcesz zapobiegać, tak jak w jądrze Linuksa istnieją różne rzeczy, które mogą mieć osobne włączanie / wyłączanie blokowania.

Jeśli twoje jądro ma CONFIG_IKCONFIGi jest CONFIG_IKCONFIG_PROCwłączone, możesz sprawdzić swoją konfigurację zapobiegawczą poprzez /proc/config.gz(jeśli nie masz, niektóre dystrybucje wysyłają /bootzamiast niej konfigurację jądra ):

$ 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

Jeśli masz CONFIG_IKCONFIG, ale nie CONFIG_IKCONFIG_PROCmożesz, możesz go pobrać z obrazu jądra za pomocą extract-ikconfig.

Chris Down
źródło
Zrobiłem moduł jądra w malinie, który dialog z czujnikiem zewnętrznym, aby zapytać o temperaturę. aby porozmawiać z czujnikiem, powinienem ustawić wejście i wyjście pinów gpio na określony czas (w ms). a moduł działa dobrze. tak samo moduły jądra nie są wyprzedzane przez inne procesy przez program planujący, ponieważ jeśli jest on wyprzedzony, czas będzie niewłaściwy, a wynik uzyskany z czujnika będzie błędny.
mikmik
2

Jądro możliwe do uniknięcia (pulpit z niskim opóźnieniem) PREEMPTotagowało swoją nazwę wersji ( uname -a). Pojawia się to również /proc/versionw ciągu „magicznej wersji” używanym do decydowania, czy moduły można / nie można załadować do danego jądra, np.

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

Afaik nie ma takiego tagowania CONFIG_PREEMPT_VOLUNTARY.

PypeBros
źródło