내 Linux 커널이 선점형인지 비선점형인지 확인하고 싶습니다. 다음과 같은 명령을 사용하여 이를 어떻게 확인할 수 있습니까 uname -a
?
답변1
커널이 선점 가능한지 여부는 선점하려는 대상에 따라 다릅니다. Linux 커널에는 선점을 개별적으로 활성화/비활성화하는 여러 가지가 있습니다.
커널이 활성화되어 있으면 CONFIG_IKCONFIG
다음 CONFIG_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
특정 커널에 모듈을 로드할 수 있는지 여부를 결정하는 데 사용되는 "버전 매직" 문자열 에도 나타납니다 .
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
이는 PypeBros가 제안하는 것보다 더 많은 정보를 제공하지는 않지만 uname -a
, 다른 설정을 확인하려는 경우 파일을 열고 찾아보면 더 많은 정보를 제공할 것입니다.