【问题标题】:How to calculate latency [duplicate]如何计算延迟[重复]
【发布时间】:2013-04-08 05:08:27
【问题描述】:

我创建了一些 Java 代码来测量延迟、数据包大小和带宽。

计算延迟所需的公式是什么?

这是我目前正在使用的,但不确定它是否正确:

//latency = packetsize / delay + bandwidth 
System.out.println("latency is " + (len*2) / (duration + transferRateMb));

编辑 长度乘以 2 得到正确的字节值

duration 是 ping 完成所用的时间

传输率由 :

double transferRateMb = ((len*524288.0) / (duration/ 1000000000.0) ) ; //amount of data in megabytes transferred in 1 second. 

看了各种指南,没看懂,这只是一个项目的简单需求

这也将运行 20 次并取平均值

有什么想法吗?

【问题讨论】:

  • 我希望(duration + transferRateMb)给你双倍的价值和---> Latency and bandwidth并且已经问过---> how to calculate packet time from latency & Bandwidth
  • 延迟受网络拥塞的影响最大,随着时间的推移会发生很大的变化,并且一个方向的延迟可能与返回延迟不匹配。没有真正的方法可以得到一个公式来告诉你延迟是什么。这就是为什么我们有 IP SLA 等工具来持续测量实际延迟的原因。

标签: java networking


【解决方案1】:

我总是测量延迟。平均延迟通常不是很有趣,您真正需要知道的是延迟有多糟糕,例如100 分之一、1000 分之一或更糟的情况。为此,您需要测量每个单独的延迟并对其进行采样(或保持最大值)这将远远高于您的计算,例如很容易达到 10 倍

简而言之,你无法计算你应该关心的延迟,你必须测量它。

【讨论】:

  • 谢谢我计划运行 20 次测试并取平均值,我如何测量延迟?
  • 我建议多次运行测试并忽略前 20,000 秒或前 2 秒(以使测试预热) 在消息中使用时间戳并将其与到达时的时间戳进行比较你记录每条消息花费了多长时间如果你测量另外 10,000 个,你可以获得合理的 99%tile,如果你测量 1,000,000,你得到一个合理的 99.9%tile。要获得百分位数,请对结果进行排序,例如在 int[] 中,取中间值 50%,size*9/10 为 90%tile,size*99/100 值为 99%,size*999/1000 为 99.9%
  • 好的,谢谢,我的方程式可以计算吗?
  • 您可以计算出最佳情况下的延迟时间。这不是很有用。只有通过测试才能获得最坏情况下的延迟。
猜你喜欢
  • 2013-12-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-17
  • 2021-04-19
相关资源
最近更新 更多