Come posso controllare la mia configurazione di prelazione del kernel?


11

Voglio verificare se il mio kernel Linux è preventivo o non preventivo. Come posso verificarlo usando un comando, ad esempio uname -a?

Risposte:


10

Il fatto che un kernel sia preventivo o meno dipende da ciò che si desidera anticipare, come nel kernel Linux, ci sono varie cose che possono essere abilitate / disabilitate preventivamente separatamente.

Se il tuo kernel ha CONFIG_IKCONFIGe CONFIG_IKCONFIG_PROCabilitato, puoi scoprire la tua configurazione di prelazione attraverso /proc/config.gz(se non lo hai, alcune distribuzioni forniscono /bootinvece la configurazione del kernel ):

$ 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

Se lo hai CONFIG_IKCONFIG, ma non CONFIG_IKCONFIG_PROCpuoi ancora estrarlo dall'immagine del kernel con extract-ikconfig.


Ho creato un modulo kernel in lampone che dialoga con un sensore esterno per chiedere la temperatura. per parlare con il sensore, dovrei impostare l'ingresso e l'uscita dei pin gpio per il periodo di tempo specificato (in ms). e il modulo funziona bene. così i moduli del kernel non sono preconfigurati da altri processi dallo scheduler, poiché se è preemptato, i tempi saranno sbagliati e il risultato ottenuto dal sensore sarà sbagliato.
Mikmik,

2

Un kernel preemptible (desktop a bassa latenza) è stato PREEMPTtaggato nel nome della sua versione ( uname -a). Questo appare anche nella /proc/versione nella stringa "versione magica" usata per decidere se i moduli possono / non possono essere caricati su un dato kernel, ad es

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

Non esiste tale codifica per CONFIG_PREEMPT_VOLUNTARY, Afaik.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.