커널이 선점형인지 어떻게 확인하나요?

dong1036의 이미지


현재 깔려져 있는 리눅스가 선점형 커널인지 확인할수 있는 방법이 있나요?

보통 컴파일 할때 PREEMPT해서 설정해서 컴파일을 했는데,

uname -a로 확인을 하면 Linux ~~~ SMP PREEMPT로 나오는 것으로 봐서 선점형으로 깔려져 있다는

것을 알겠는데...

다른 리눅스 머신은 그냥... Linux ~~~ SMP 만 출려이 됩니다.

이 리눅스 머신은 비선점이라는 것인가요??

PREEPT로 나온 리눅스는 아치리눅스이고, 안나오는 것은 CentOS입니다.

고수들의 답변을 부탁드립니다. ㅋ

불편한웹의 이미지

@debian:/boot$ grep PREEMPT /boot/config-2.6.30-2-amd64 
# CONFIG_PREEMPT_RCU is not set
# CONFIG_PREEMPT_RCU_TRACE is not set
CONFIG_PREEMPT_NOTIFIERS=y
CONFIG_PREEMPT_NONE=y
# CONFIG_PREEMPT_VOLUNTARY is not set
# CONFIG_PREEMPT is not set
planetarium의 이미지

조금 덧붙이자면
grep PREEMPT /boot/config-`uname -r`
로 일반화 할수 있겠죠.
근데 이건 컴파일 당시의 상황을 보여준거니 100% 확신할수는 없죠 뭐... (95%는 충분히 넘겠습니다만)
config 파일이 존재하지 않을 수도 있구요.

kerino의 이미지

busy loop를 도는 커널 쓰레드를 생성하는 모듈을 만든다음
insmod 시켜서

hang 걸리면 non-preemt kernel
hang 안 걸리면 preemt kernel