하드웨어 클럭 소스 TSC HPET ACPI 타입

클럭소스는 회로나 부품의 심장부라고 할 수 있습니다. 임베디드 보드에서 일정한 클럭을 제공하는 발진 회로입니다.

 

클럭이 서로 상호 작용하는 방식과 CPU 주파수 조정 또는 에너지 절약 모드 진입과 같은 시스템 이벤트에 반응하는 방식은 클럭이 실시간 커널에 적합한 클럭 소스인지 여부를 결정합니다.

 

선호하는 클록 소스 TSC(타임 스탬프 카운터)이지만 사용할 수 없는 경우 HPET(고정밀 이벤트 타이머)가 다음으로 사용할 수 있는 옵션이 될 수 있습니다.

그러나 모든 시스템에 HPET 시계가 있는 것은 아니며 일부 HPET 시계는 신뢰할 수 없습니다.

 

TSC 및 HPET가 없는 경우 ACPI 전원 관리 타이머(ACPI_PM), 프로그래밍 가능한 간격 타이머(PIT) 및 실시간 시계(RTC)가 다른 옵션에 포함됩니다.

마지막 두 옵션은 읽기 비용이 많이 들거나 저해상도(시간 세분성)를 가지므로 실시간 커널에 대해 차선책입니다.

 

/sys/devices/system/clocksource/clocksource0/current_clocksource

해당 파일을 읽어 검사를 할 수 있습니다.

클럭소스 보기

 

가상 머신의 클럭 소스

클럭소스 보기

vmware, virtualbox에서 읽을 경우 kvm-clock이 나올 수 있습니다.

 

(1) HPET : High-Precision Event Timer, 지금 현재 문제가 발생한 시스템이 ACPI 3.0을 지원하는 경우.

해당 시스템이 ACPI 3.0을 온전하게 지원하는 메인보드 일 경우, HPET가 탑재되어 있을 것입니다.

이럴 경우에는, resolution도 높고, 다른 장치에 비해 오버헤드도 낮은 HPET를 선택하는 것이 가장 좋은 해결책입니다.

 

자신의 시스템이 HPET를 보유한 메인보드 일 경우, 그리고 커널에서 지원하는 경우, /system/devices/system/clocksource/clocksource0/available_clocksource 파일을 보시면 "hpet" 가 존재하게 됩니다.

 

자신의 메인보드가 HPET를 사용할 수 있지만(ACPI 3.0 대응), HPET가 위의 목록에서 나오지 않는 경우에는

커널 설정의 Processor type and features 에서 "HPET Timer Support" 항목을 확인하시고, 이를 반영해주시면 됩니다.

 

부팅시 커널 옵션으로 clocksource=hpet 로 넘겨주면 됩니다. 그 밖에도, hpet=force (개인적으로 권장하지는 않습니다) 가 있습니다.

 

안타깝게도 저의 경우는 ACPI 2.0을 간신히 지원하는 구닥다리 ATI IXP200 칩셋(네, 939소켓입니다 ㅠ)이라, HPET는 해당이 없습니다. vmware나 virtualbox도 이건 해당이 없겠네요.

 

(2) ACPI PM Timer

ACPI Power Management Timer는 대부분의 시스템에서 사용할 수 있습니다. [2]의 노트에서는, HPET의 차선책으로 ACPI PM Timer을 사용하는 것을 언급하고 있습니다. 커널 옵션 ... 의 위치는,

 

Power Management options ->

[*] ACPI (Advanced Configuration and Power Interface) Support ->

[*] Power Management Timer Support

댓글

Designed by JB FACTORY