比较您 Linux 实例的时间戳
如果您使用的是 Amazon Time Sync Service,就可以将 Amazon EC2 Linux 实例上的时间戳与 ClockBound 进行比较,以确定事件的真实时间。ClockBound 可以测定 EC2 实例的时钟的准确性,并允许您检查一个给定的时间戳是早于还是晚于实例的当前时钟。在确定整个 EC2 实例中的事件与事务的顺序和一致性方面,这些信息十分重要,并且不会收到各个实例的地理位置的影响。
ClockBound 是一个开源守护进程和开源库。要了解关于 ClockBound 的详情,包括安装说明,请参阅 GitHub
ClockBound 仅支持 Linux 实例。
如果您使用与 PTP 硬件时钟的直接 PTP 连接,则您的时间进程守护程序(例如 chrony)将低估时钟误差范围。这是因为 PTP 硬件时钟不会像 NTP 那样将正确的误差范围信息传递给 chrony。因此,您的时钟同步进程守护程序假定时钟精确到 UTC,因此误差范围为 0
。为了测量完整的误差范围,Nitro 系统会计算 PTP 硬件时钟的误差范围,并通过 ENA 驱动程序 sysfs
文件系统将其提供给您的 EC2 实例。您可以将其直接读取为以纳秒为单位的值。
检索 PTP 硬件时钟错误绑定
-
首先使用以下命令之一获取 PTP 硬件时钟设备的正确位置。命令中的路径因用于启动实例的 AMI 而异。
-
对于 Amazon Linux 2:
cat /sys/class/net/eth0/device/uevent | grep PCI_SLOT_NAME
-
对于 Amazon Linux 2023:
cat /sys/class/net/ens5/device/uevent | grep PCI_SLOT_NAME
输出是 PCI 插槽名称,也就是 PTP 硬件时钟设备的位置。在此例中,该位置为
0000:00:03.0
。PCI_SLOT_NAME=
0000:00:03.0
-
-
要检索 PTP 硬件时钟错误绑定,请运行以下命令。请包括上一步中的 PCI 插槽名称。
cat /sys/bus/pci/devices/
0000:00:03.0
/phc_error_bound输出是 PTP 硬件时钟的时钟误差范围(以纳秒为单位)。
在使用直接 PTP 连接到 PTP 硬件时钟时,要计算特定时间点的正确时钟误差范围,必须在 chrony 轮询 PTP 硬件时钟时添加来自 chrony 或 ClockBound 的时钟误差范围。有关测量和监控时钟准确度的更多信息,请参阅 Manage Amazon EC2 instance clock accuracy using Amazon Time Sync Service and Amazon CloudWatch – Part 1