Linux 커널의 시간 측정

Linux 커널의 시간 측정

커널에서 시간 간격을 측정하고 싶습니다. 나노초가 그다지 정확하지 않다는 것을 알고 있지만 밀리초보다 더 높은 정밀도가 필요합니다.

시간을 가져오는 기능은 아주 많습니다. Jiffies, 시간, 잠들지 않는 시간, 자는 시간... ktime_get, clock_gettime, sys_clock_gettime 등이 있습니다.
기능을 살펴보니 뭔가 거대한 기계가 작동하고 있는 것 같은 느낌이 들었습니다. 시간으로 변환할 필요도 없고, 여러 타이밍 구조 간에 값을 앞뒤로 변환하는 것도 피하고 싶습니다.

일단 퍼포먼스를 존중하지 않고는 괜찮다고 생각해요

struct compat_timespec cts;
compat_sys_clock_gettime(CLOCK_MONOTONIC, &cts);

가상 파일의 파일 열기 기능에서 사용하고 싶을 때까지 작동합니다. 이제 compat_sys_clock_gettime오류 코드를 반환합니다. 읽기 시간 오류의 원인은 무엇입니까?

그래서 제 질문은 당황스러울 정도로 기본적입니다.

PC 부팅 이후 나노초 수를 효율적으로 얻을 수 있는 방법은 무엇입니까?

  • 수면시간이나 기타 특별한 조건을 빼지 않고,
  • 실패할 가능성은 없나요?

나의 단순한 상상은 어딘가에서 티커 값을 읽고 그 값을 곱/나누어 ns를 얻는 함수가 있어야 한다는 것입니다. 왜 그렇게 쉽지 않은지 알게 되어 저도 기쁩니다.

답변1

최근에는 ktime_get.

더 좋은 것이 있는지, 아니면 이 기능이 널리 사용되어 사용하는 것이 좋은지 잘 모르겠습니다. 하지만 이 함수는 작은 해상도를 반환하는 것으로 보이며 적어도 크게 느리지는 않습니다.
또한 반환 값이 없습니다. 즉, 실패해서는 안 되지만 안정적으로 시간을 반환해야 합니다.

관련 정보