ฉันต้องการตรวจสอบว่าเคอร์เนล Linux ของฉันเป็นแบบ preemptive หรือไม่ใช่แบบ preemptive ฉันจะตรวจสอบสิ่งนี้โดยใช้คำสั่งอะไรเช่นuname -a
?
ฉันต้องการตรวจสอบว่าเคอร์เนล Linux ของฉันเป็นแบบ preemptive หรือไม่ใช่แบบ preemptive ฉันจะตรวจสอบสิ่งนี้โดยใช้คำสั่งอะไรเช่นuname -a
?
คำตอบ:
ไม่ว่าเคอร์เนลจะถูกยึดเอาเสียก่อนหรือไม่นั้นขึ้นอยู่กับสิ่งที่คุณต้องการที่จะยึดเอาไว้เช่นเดียวกับในเคอร์เนล Linux มีหลายสิ่งที่สามารถเปิด / ปิดการจองได้แยกกัน
หากเคอร์เนลของคุณมีCONFIG_IKCONFIG
และCONFIG_IKCONFIG_PROC
เปิดใช้งานคุณสามารถค้นหาการกำหนดค่า preemption ของคุณผ่าน/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
ได้
เคอร์เนลที่จองล่วงหน้าได้ (เดสก์ท็อปที่มีเวลาหน่วงต่ำ) 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