Linux インスタンスのタイムスタンプを比較する - Amazon Elastic Compute Cloud

Linux インスタンスのタイムスタンプを比較する

Amazon Time Sync Service を使用している場合は、Amazon EC2 Linux インスタンスのタイムスタンプと ClockBound を比較して、イベントの実際の時刻を判断できます。ClockBound は EC2 インスタンスのクロック精度を測定し、インスタンスの現在のクロックに関して、特定のタイムスタンプが過去または将来にあるかどうかを確認できます。この情報は、各インスタンスの地理的位置に関係なく、EC2 インスタンス間のイベントとトランザクションの順序と一貫性を判断するのに役立ちます。

ClockBound は、オープンソースのデーモンとライブラリです。インストール手順を含む ClockBound の詳細については、GitHub の「ClockBound」を参照してください。

ClockBound は Linux インスタンスでのみサポートされています。

PTP ハードウェアクロックへの直接 PTP 接続を使用している場合、chrony などのタイムデーモンはクロック誤差範囲を過小評価します。これは、PTP ハードウェアクロックが NTP と異なり誤差範囲の正しい情報を chrony に渡さないためです。その結果、クロック同期デーモンはクロックが UTC に対して正確であると想定しているため、0 という誤差範囲になります。誤差範囲全体を測定するために、Nitro System は PTP ハードウェアクロックの誤差範囲を計算し、ENA ドライバー sysfs ファイルシステムを介して EC2 インスタンスで使用できるようにします。これをナノ秒単位の値として直接読み取ることができます。

PTP ハードウェアクロックエラーバウンドを取得するには
  1. まず、以下のコマンドのいずれかを使用して 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

    出力は PTP ハードウェアクロックデバイスの場所である PCI スロット名です。この例では、場所は 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クロック精度の測定とモニタリングの詳細については、「Amazon Time Sync Service と Amazon CloudWatch を使用して Amazon EC2 インスタンスのクロック精度を管理する — パート 1」を参照してください。