3

I would like to synchronize two events between two (or more) wire networked Linux machines. Can I use NTP to do this?

NTP seems to be mostly focused on synchronizing to a time server, where I need two machines to be synchronized to each other. There is a subtle difference there. For example, if one machine is located half as many hops away as a second machine from the time server, I might be able to get better synchronization if I try to synchronize the two machines to each other directly instead of synchronizing both to a time server.

A slightly different question: If I were to use NTP, what would be the best way to schedule events? A cronjob or at script? Could I get better (sub second) synchronization if I were to use a library like this one.

Finally, does anyone know of any time synchronization software packages that are suited to synchronizing two (or more) machines together, not necessarily synchronizing to a time server.

Thanks for any help.

4

2 に答える 2

2

1台のマシンをマスターとして委任し、残りのマシンをスレーブとして委任してみてください。同期イベントが発生する必要がある場合、マスターはスレーブをトリガーして開始します。

同期は、マシン間の遅延(ping)によってのみ制限され、システムクロックの一貫性について心配する必要はありません。

于 2011-02-02T16:30:32.210 に答える
0

ホスト間の ping 遅延の変動とは? 調整されたプロセス間でどのような開始時間の不一致が許容されますか? どのようにプロセスを開始しますか? Cron は非常に不正確であり、プロセスの起動時間も考慮する必要があります。

異なるホストへの ping 時間が大幅に異なる場合は、次のようにします。

  • イベントの数分前に、信頼できるパブリック NTP サーバーを使用して、調整されたすべてのホストのクロックを同期します。ただし、イベントが頻繁に発生する場合は、1 日に 3 ~ 4 回の同期で十分です。

  • のような精度の低いスケジューラを使用して、2 ~ 3 分前に、イベントの 15 秒前までcron実行する単純なラッパー シェル スクリプトを開始します 。wait()次に、ラッパー スクリプトが通常よりも高い優先度で tagert アプリを起動します。

  • アプリの読み込み (ディスク アクセスと動的リンクが遅い)、必要なデータ ファイルの読み取り、時間のかかる計算などを行います。次に、 orの直前に置かれたorを使用usleep()して、1 秒未満の精度で開始の瞬間まで待機します。あなたのターゲットアクションになります。ftime()gettimeofday()fireLasersAtTheMoon()

明らかに、ネットワーク通信のように本来不正確なアクションをこれほど正確に同期することはほとんど意味がありません。ネットワークの遅延が予測可能な場合は、往復時間を使用して測定しping、1 つのホストでマスター プロセスを作成して、遅延を考慮して他のホストに ssh 経由で開始コマンドを送信します。

于 2011-02-04T18:21:47.030 に答える