Time 精确测量机器之间的运行时间

Time 精确测量机器之间的运行时间,time,amazon-ec2,ntp,Time,Amazon Ec2,Ntp,我试图测量从一台机器发送消息到另一台机器接收消息之间经过的时间。最初,我在EC2实例的网络中测量这一点。EC2实例使用NTP进行时间同步。我取发送机器发送消息时的系统时间,并从接收机器接收消息时的系统时间中减去。我不确定这种方法的准确性;有时我会得到奇怪的结果,即负数。我认为问题在于时间同步的准确性。有没有更好的方法可以更准确地测量机器之间的运行时间?注意:我不想测量往返时间,因为协议的细节对我需要测量的内容没有帮助。只有通过“ntp方案”才能安全地计算经过的时间: 为此,必须来回发送消息。这样

我试图测量从一台机器发送消息到另一台机器接收消息之间经过的时间。最初,我在EC2实例的网络中测量这一点。EC2实例使用NTP进行时间同步。我取发送机器发送消息时的系统时间,并从接收机器接收消息时的系统时间中减去。我不确定这种方法的准确性;有时我会得到奇怪的结果,即负数。我认为问题在于时间同步的准确性。有没有更好的方法可以更准确地测量机器之间的运行时间?注意:我不想测量往返时间,因为协议的细节对我需要测量的内容没有帮助。

只有通过“ntp方案”才能安全地计算经过的时间:

为此,必须来回发送消息。这样,您可以计算往返延迟时间和偏移量。往返延迟计算如下:

delta = (t_3 - t_0) - (t_2- t_1)
在哪里

所以

t3 − t0 is the time elapsed on the client side between the emission 
        of the request packet and the reception of the response packet and
t2 − t1 is the time the server waited before sending the answer.
偏移θ由下式给出

theta = ((t_1 - t_0) + (t_2 - t_3))/2
当客户端和服务器之间的传入和传出路由具有对称的标称延迟时,同步是正确的。如果路线没有共同的标称延迟,则同步的系统偏差为向前和向后行程时间之差的一半

必须有双向通信才能实现同步。知道偏移量将允许计算从一台机器发送的消息与另一台机器接收到的消息之间经过的时间

theta = ((t_1 - t_0) + (t_2 - t_3))/2