커널 선점 구성을 어떻게 확인합니까?

커널 선점 구성을 어떻게 확인합니까?

내 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

허용된 답변에는 일부 배포판이 /bootUbuntu 20.04로 시작하고 최소한 다른 시스템에서는 /boot/config-$(uname -r).

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

이는 PypeBros가 제안하는 것보다 더 많은 정보를 제공하지는 않지만 uname -a, 다른 설정을 확인하려는 경우 파일을 열고 찾아보면 더 많은 정보를 제공할 것입니다.

관련 정보