클럭 소스를 변경하면 어떤 영향이 있나요?

클럭 소스를 변경하면 어떤 영향이 있나요?

출력에는 cat /sys/devices/system/clocksource/clocksource0/available_clocksource사용 가능한 하드웨어 시계가 나열됩니다.

눈에 띄는 차이 없이 시계를 바꿨습니다. sudo /bin/sh -c 'echo acpi_pm > current_clocksource'

하드웨어 시계를 변경하면 실제적인 효과는 무엇입니까? 사용 가능한 시계(또는 눈에 보이는 다른 변형)의 해상도를 확인할 수 있는 방법이 있습니까?

답변1

우선, 커널은 CPU에 의해 저장되고 매우 빠르기 때문에(RDTSC 및 EDX:EAX 읽기) 자동으로 가장 좋은 것, 일반적으로 사용 가능한 경우 TSC를 선택합니다.

그러나 이것이 항상 그런 것은 아닙니다. 초기에는 SMP 시스템이 대부분 여러 개의 독립 CPU로 구축되었을 때 CPU가 최대한 "동일"(모델, 속도 및 스테핑이 완벽하게 일치)하는 것이 매우 중요했습니다. 하지만 그럼에도 불구하고 때로는 하나가 다른 것보다 훨씬 빠르므로 그 당시의 TSC 카운터는 "불안정"합니다. 이것이 바로 이를 변경(또는 "notsc" 커널 매개변수를 사용하여 비활성화)하는 것이 허용되는 이유입니다. 이러한 제한에도 불구하고 TSC는 여전히 최고의 소스이지만 커널은 멀티 코어 시스템에서 하나의 CPU에만 의존하도록 매우 주의해야 하거나 적극적으로 동기화를 유지하려고 노력해야 하며 일시 중지/재개와 같은 사항도 고려해야 합니다. (카운터 재설정) 및 CPU 주파수 스케일링(일부 CPU 모델의 TSC에 영향을 미침)

SMP 초기에는 일부 사람들이 서로 다른 속도의 CPU(새로운 BIG.little 아키텍처와 유사)를 사용하여 시스템을 구축하기도 했는데, 이는 타이밍 세계에 큰 문제를 일으켰습니다.

어떤 해상도를 가지고 있는지 확인하는 방법은클록겟()예시가 있나요?여기.

몇 가지 추가 링크가 있습니다:공식 커널 문서(이 디렉토리에는 다른 흥미로운 파일이 있습니다)크롬북에서 TSC 재동기화다양한 클럭 소스를 사용한 일부 벤치마크.

간단히 말해서, 클럭 소스를 변경할 때 사용자 공간에서 눈에 보이는 변화가 있어서는 안 됩니다. 단지 속도 저하만 있을 뿐입니다.하루 중 시간을 가져옵니다().

답변2

하드웨어 시계는 기계의 전원이 꺼진 경우에도 CPU에서 실행되는 제어 프로그램과 독립적으로 실행되는 시계입니다.

시스템 시간은 Linux 커널의 내부 시계에 기록된 시간입니다.

일부 프로그램과 Linux 커널의 가장자리 부분(예: 파일 시스템)은 커널 시간대 값을 사용합니다. vfat 파일 시스템이 그 예입니다. 커널 시간대 값이 잘못된 경우 vfat 파일 시스템은 파일에 잘못된 타임스탬프를 보고하고 설정합니다.

hwclock 명령을 사용하여 하드웨어 시계 시간을 볼 수 있습니다: hwclock --show

또한 --systohc 및 --hctosys 플래그를 각각 사용하여 시스템 시간을 하드웨어 시계 시간과 동기화하거나 그 반대로 동기화할 수도 있습니다.

관련 정보