Bagaimana saya bisa memeriksa konfigurasi preemption kernel saya?


11

Saya ingin memeriksa apakah kernel Linux saya adalah preemptive atau non-preemptive. Bagaimana saya bisa memeriksa ini menggunakan perintah, sesuatu seperti uname -a?

Jawaban:


10

Apakah kernel preemptive atau tidak tergantung pada apa yang ingin Anda preempt, seperti pada kernel Linux, ada berbagai hal yang dapat mengaktifkan / menonaktifkan preemption secara terpisah.

Jika kernel Anda telah CONFIG_IKCONFIGdan CONFIG_IKCONFIG_PROCdiaktifkan, Anda dapat mengetahui konfigurasi preemption Anda melalui /proc/config.gz(jika Anda tidak memiliki ini, beberapa distribusi mengirimkan konfigurasi kernel /bootsebagai gantinya):

$ 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

Jika sudah CONFIG_IKCONFIG, tetapi belum CONFIG_IKCONFIG_PROC, Anda masih bisa mengeluarkannya dari kernel image extract-ikconfig.


Saya membuat modul kernel di raspberry yang berdialog dengan sensor eksternal untuk menanyakan suhu. untuk berbicara dengan sensor, saya harus mengatur input dan output pin gpio untuk jumlah waktu yang ditentukan (dalam ms). dan modul berfungsi dengan baik. begitu juga modul kernel yang tidak di-preempt oleh proses lain oleh scheduler, karena jika di-preempt, waktunya akan salah, dan hasilnya dapatkan dari sensor akan salah.
mikmik

2

Kernel preemptible (desktop latensi rendah) telah PREEMPTmemberi tag pada nama versinya ( uname -a). Ini juga muncul di /proc/versiondan dalam string "sihir versi" yang digunakan untuk memutuskan apakah modul dapat / tidak dapat dimuat pada kernel yang diberikan, misalnya

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

Tidak ada penandaan seperti itu untuk CONFIG_PREEMPT_VOLUNTARY, afaik.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.