比較 Linux 執行個體的時間戳記 - Amazon Elastic Compute Cloud

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

比較 Linux 執行個體的時間戳記

如果您使用的是 Amazon 時間同步服務,則可以將 Amazon EC2 Linux 執行個體上的時間戳記與進行比較, ClockBound 以判斷事件的真實時間。 ClockBound 測量 EC2 執行個體的時鐘準確性,並允許您檢查指定的時間戳記是否處於過去或 future 與執行個體的當前時鐘相關。此資訊對於判斷 EC2 執行個體之間事件和交易的順序和一致性非常有用,而且與每個執行個體的地理位置無關。

ClockBound 是一個開源守護進程和庫。要了解更多內容 ClockBound,包括安裝說明,敬請參閱 ClockBound(詳見)GitHub

ClockBound 僅支援 Linux 執行個體。

如果您正在使用連接 PTP 硬體時鐘的直接 PTP 連線,您的時間常駐程式 (例如 chrony) 將低估時鐘誤差範圍。這是因為 PTP 硬體時鐘不會像 NTP 那樣傳遞正確的誤差範圍資訊至 chrony。因此,時鐘同步處理常駐程式會假設時鐘是根據 UTC 調整準確度,因此會有誤差範圍 0。為了測量完整的錯誤限制,Nitro 系統會計算 PTP 硬體時鐘的錯誤限制,並透過 ENA 驅動程式sysfs檔案系統將其提供給 EC2 執行個體。您可以直接將其作為一個值讀取,以納秒為單位。

若要擷取 PTP 硬體時脈錯誤繫結
  1. 首先使用下列指令之一,取得 PTP 硬體時鐘裝置的正確位置。根據用來啟動執行個體的 AMI,命令中的路徑會有所不同。

    • 針對 Amazon Linux 2:

      cat /sys/class/net/eth0/device/uevent | grep PCI_SLOT_NAME
    • 對於 Amazon

      cat /sys/class/net/ens5/device/uevent | grep PCI_SLOT_NAME

    輸出是 PCI 插槽名稱,也就是 PTP 硬體時鐘裝置的位置。在此範例中,位置為0000:00:03.0

    PCI_SLOT_NAME=0000:00:03.0
  2. 若要擷取 PTP 硬體時鐘錯誤繫結,請執行下列命令。包括上一個步驟中的 PCI 插槽名稱。

    cat /sys/bus/pci/devices/0000:00:03.0/phc_error_bound

    輸出即為 PTP 硬體時鐘的時鐘誤差範圍 (以奈秒為單位)。

若要計算在使用 PTP 硬體時脈的直接 PTP 連線時,在特定時間點的正確時脈誤差,您必須新增輪詢 PTP 硬體時脈的時脈錯誤,chrony或是 ClockBound 在chrony輪詢 PTP 硬體時脈時間的時脈錯誤。如需有關測量和監控時脈準確度的詳細資訊,請參閱使用 Amazon 時間同步服務和 Amazon 管理 Amazon 執行個體時鐘準確性 CloudWatch — 第 1 部分