【发布时间】:2021-09-30 13:09:09
【问题描述】:
Linux 是否有任何方法可以获得毫秒或微秒精度的启动时间,用于将启动时间相关的时间戳转换为 Unix 时间戳之类的东西?我找到的最接近的是/proc/uptime(正如this answer 等地方所建议的那样),但不幸的是,这只能让您达到10ms 的最佳精度。就上下文而言,我有一个与 v4l 一起使用的相机,它提供微秒精度的时间戳,但它们自启动以来就及时。当它们被发送到另一台计算机时,我需要将它们转换为 Unix 时间戳。这是一件很难以某种我不知道的方式提供的东西吗?如果是这样,为什么有这么多事情自启动以来使用时间?
【问题讨论】:
-
另外,在具有单调 TSC 的现代 x64(可能还有其他)上,您可以使用 TSC 计数器并将其除以 CPU 频率。
-
出于什么目的? FWIW,现代处理器“启动”是一个多步骤过程。 x86 内核在实际上电后的相当长的一段时间内被初始化并从复位中释放,此时一些其他组件已经“启动”。
-
@EugeneSh。基本上,如上所述,我正在使用一组摄像头,由于驱动程序的工作方式,它们会为我提供帧时间戳(即图像到达 Linux 时的时间戳)作为启动后的时间。虽然“启动时间”确实有一个不清楚的定义,但我试图弄清楚 Linux 使用什么来定义该启动时间时钟。我猜这是内核第一次获得控制权的时候,不一定是硬件本身启动时