如何检查我的内核抢占配置?

如何检查我的内核抢占配置?

我想检查我的 Linux 内核是抢占式的还是非抢占式的。如何使用诸如 之类的命令来检查这一点uname -a

答案1

内核是否是抢占式的取决于您想要抢占的内容,就像在 Linux 内核中一样,有多种东西可以单独启用/禁用抢占。

如果您的内核已启用CONFIG_IKCONFIGCONFIG_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

答案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

答案3

接受的答案提到一些发行版以/boot.在 Ubuntu 20.04 和至少一些其他系统上,您可以通过查看/boot/config-$(uname -r).例如:

$ grep PREEMPT_RT /boot/config-$(uname -r)
CONFIG_PREEMPT_RT=y

这不会为您提供比uname -aPypeBros 建议的更多信息,但如果您想检查其他设置,如果您打开文件并浏览它,这将为您提供更多信息。

相关内容