HP-UX General
1825713 メンバー
3142 オンライン
109686 解決策
新規ポスト

2つのサーバの時間の流れの違いを比較するには?

 
T_Ka
コントリビューター

2つのサーバの時間の流れの違いを比較するには?

例えば、2つのサーバで30秒間スリープする処理があったとして、これを外側から正確に測定すると、厳密にはスリープしていた時間は2サーバ間で微妙に違うと思います。

  # sleep 30 ← 例えば、実際には29.58秒間

  # sleep 30 ← 例えば、実際には30.53秒間

この2つのサーバの時間の流れの速さを、「svr1の時間の流れはsvr2の1.13倍」という感じで、相対的に比較したいのですが、どうすればよいでしょうか?

自分では以下のようなものを考えてみたのですが、あまり正確な測定ではなさそうに思います。

# timex remsh svr2 " sleep 30 "

real 30.54

usr 0.00

sys 0.00

時間の流れの比 --> 30.54/30.00

1件の返信1
cf
レギュラーアドバイザー

2つのサーバの時間の流れの違いを比較するには?

こんにちは

11i v2のsleep(3c)のmanから引用しますが、sleepの

結果が異なるのは、それぞれのサーバの時計がずれている

だけではなく、OSで行っている処理が異なっているためです。

多分、まったく同じ処理を、同じ時刻からさせていれば

2台のsleepの違いは、サーバの時計のずれ(精度)の

違いと言えると思いますが、通常は、OS起動後の時刻は、

OSの負荷状況によってずれるので、一緒とは言えないです。

なので、ntpのような仕組みを必要とするのだと思います。

ただ、ntpを入れても、時刻は正確になるでしょうが、

sleepまでは正確にはならないと思います。

---sleep(3c) 引用---

実際の停止時間は以下の 2 つの理由により、要求された時間よりも短くなることがあります。

1 秒に固定された間隔 (内部クロックによる) でスケジュールドウェイクアップが起こる。

あらゆる受信されたシグナルは、受信したルーチンの後、 sleep を中止する。

休止時間は、システム内の他の動作のスケジューリングのために、要求された時間よりも長くなることがあります。呼び出し側が sleep() に要求した時間より早い時間にアラームを設定した場合や、他のシグナルを受信して sleep() が早く終了した場合、戻り値として ``unslept''の時間 (要求された時間から実際に休止していた時間を引いたもの) が返されます。