web-dev-qa-db-ja.com

時間をミリ秒の精度とマシン間の精度に同期させるための最良の方法は何ですか?

私が理解していることから、PCの水晶はクロックスキューで有名です。クロックが常に歪んでいる場合、ミリ秒の精度と精度でマシン間でクロックを同期するための最良の方法は何ですか?私が見つけたものから、NTPとPTPは可能な解決策ですが、stackoverflow.comで誰かが経験を持っているかどうか疑問に思いました!

NTPが一般的な選択肢であることは理解していますが、PTP(IEEE1588)の経験がある人はいないかと思います。

28
PiNoYBoY82

標準のNTPデーモンを実行するだけです。

ネットワークサーバーと通信するだけでなく、いくつかのGPSデバイスから入力を取得するオプションがあります。

編集:私は http://www.ntp.org/ を参照していましたが、Windowsに付属しているものではありません。

どのNTPクライアントがWindowsに最適かについては何も示唆していませんが、Unixマシンの場合、NTPを実行しない本当の理由はありません。

16
wnoise

データ交換自体がすでに少なくともミリ秒かかるため、結果が損なわれるため、データを交換してマシンをミリ秒レベルに同期することはできません。最初にデータ転送にかかる時間を測定し、次に時間情報を送信しようとするプロトコル(測定された遅延を考慮に入れる)でさえ、平均よりも少し優れていますが、すべてのデータ転送に同じ時間がかかるわけではないため、それでも良くありません(インターネット上のサーバーに常にpingを実行し、すべてのpingの遅延がどのように異なるかを確認します)。

ミリ秒の範囲で2台のコンピューターを実際に同期する唯一の方法は、不明な遅延や絶えず変化する遅延がない転送方法を使用して、両方のコンピューターに同じソースから時間を取得させることです。例えば。両方が衛星信号を受信した場合、それは時間をブロードキャストします。信号は常に一定の遅延(衛星から地球へ)を持ち、両方ともほぼ同じナノ秒以内に信号を受信します。

たとえばドイツにはラジコンの時間があります。国のどこかに原子時計(何百年もの間ナノ秒までの正しい時刻があります)があり、一部の送信者は国中の特定の周波数で現在の時刻を恒久的に放送しています。この時刻を受信して​​永続的に同期できる目覚まし時計や腕時計も存在します(実際には永続的ではありませんが、ほとんどのモデルは、バッテリーの実行時間を節約するために24時間に1回だけ同期します)。このような受信機はコンピューターにも存在し、コンピューターの時計をその時報と恒久的に同期させることができるソフトウェアが付属しています。

私の知る限り、GPSは時間情報も送信します(それか、GPS情報から何らかの方法で時間を計算できるので、GPSプロトコルについてはあまり詳しくありません)。したがって、GPS受信機を両方のコンピューターに接続すると、おそらくミリ秒に同期させることもできます。ただし、同期がインターネット経由で行われる場合は、1台のコンピューターが最大20ミリ秒離れているよりも優れた同期を期待しないでください。

コメント投稿者を更新するには、
NTPは、人々がここで主張するのが好きなほど正確ではありません。

NTPは通常、パブリックインターネット上で時間を数十ミリ秒以内に維持でき、理想的な条件下でローカルエリアネットワークで1ミリ秒を超える精度を達成できます。

出典: ウィキペディア

ネットワークを使用せずにすべての同期を維持し、さらに公式のGMT時間との同期を維持したいのですが、ここではおそらくGPSがすべてのマシンで本当に正確な結果を得る唯一の方法です(実際にはミリ秒だけではありません)マイクロ秒まで)。

12
Mecki

これは、ミリ秒の100分の1以内に同期する10年前のソフトウェアです。 (私のチームは、NTPがラボにとって十分ではなかったときに作成しました。)

要約から:「ネットワーク化されたコモディティPC用の分散クロック。追加のハードウェアがないため、このクロックは、複数のPCからのセンサーデータを、平均10マイクロ秒、最悪の場合100マイクロ秒未満の遅延とジッターと相関させます。」

説明: http://scholar.google.com/citations?view_op=view_citation&citation_for_view=QmbeOvsAAAAJ:5nxA0vEk-isC

ソースコード: http://zx81.isl.uiuc.edu/clockkit/

11

私は会社のネットワーク全体でNTPを使用していますが、かなりうまく機能しています。重要なのは、ローカルネットワーク上に1つの権限のあるサーバーを配置し、ネットワーク上のすべてのマシンを同期させることです。そのサーバーに電波時計をインストールすることです。NTPは、たまに時計を修正するだけでなく、実際に時計の周波数を計算して修正し、より正確にするので素晴らしいです。

ネットワーク上でNTPセットアップを行ったら、別のサーバーに対して5つのVNCセッションのように開き、そこに座って時計を監視しました。すべてのサーバーの時計はミリ秒単位で同期していました。これはセットアップ直後です。 。実行すると、より正確になります。

3
Mike Starov

NTPまたはSNTPに基づくソリューションは非常にうまく機能しますが、クライアントがどの程度適切に実装されているかに大きく依存します。

確かに、この質問への答えはnotであり、サブが必要な場合はデフォルトのWindowsタイムサービスを使用します2番目の精度。マシン上で安定したタイムベースを維持するのが苦手なことで有名であり、通常は修正をオーバーシュートし、特にマシンのタイムベースがかなり不正確な場合でもほとんど不安定になります。これは一般的です。標準の組み込みWindowのツールは、すべてのマシン間で通常数秒の精度を確実に保持でき、レジストリ設定を微調整した場合でも、通常、マシン間で最大30秒のスイングが見られると想定します。

フリーウェアツール Achron は、プラス/マイナス500ミリ秒の範囲に入るのに非常に優れたソリューションです。それよりもうまくやるには、 Greyware のようなより産業的な強度のソリューションが必要になります

2
Tall Jeff

私は最近このトピックについて調査しました(Googledを読んでください)。これまでに学んだことは次のとおりです。

  • ミリ秒(またはそれ以上)の精度を得るには、ハードウェアのサポートが必要です。 PTPのGPSソースまたはハードウェアタイムスタンプ(および適切なタイムソース)。

  • PTPでのハードウェアのタイムスタンプは、サポートされているNIC-Intelにあります。

  • ハードウェアのタイムスタンプがない場合、NTPとPTPの間の精度は類似しています。

  • (以前はPTPを使用していませんでした)NTPの方がセットアップが簡単だと読みました。

  • GPSタイムソース(シリアル経由)での私の限られた経験はさまざまです。あなたがそれを動かすことができればそれは素晴らしい働きをします、しかし私がそれを動かすことができなかったデータセンターに私たちが持っているデバイスがあります...

  • マシンがコロにある場合は、DC何を提供できるかを尋ねてください。したがって、決定する必要はありません。:D

HTH

2
Lester Cheung

NTPは間違いなく進むべき道です。ローカルマスター(通常はファイアウォールまたはルーターマシン)のファイアウォールを解除する限り、基本的にはファイアアンドフォーゲットです。

1
Chris

すでに提案したように、NTPはこの問題の業界標準ソリューションですが、インターネット接続またはストラタム0ソース(コンピューター付きのGPS受信機などの正確なハードウェアクロック)が必要です。インターフェース)。

インターネット接続を使用している場合は、 NTPプール の使用を検討してください。

1
nsayer

また、ハードウェアシステムクロック(つまり、不正確なクロック)は、マシンの起動時にのみ読み取られることにも注意してください。サーバーマシンについて話している場合、サーバーマシンが原因で時間を失うことはありません。

1
Ana Betts