在Java + Linux中,测量CPU内核延迟的正确方法是什么?

时间:2016-08-01 16:05:03

标签: java linux kernel real-time benchmarking

我听说{+ 1}在Java + Linux中的CPU内核之间并不一致。那么我如何测量单向消息在环回上的延迟,换句话说,在同一台机器中 。流程是:

  • 客户端向服务器发送带有时间戳的消息
  • 服务器获取消息
  • 服务器解析消息中的时间戳
  • 服务器计算单向延迟(现在 - 时间戳)

请注意,服务器和客户端在同一台计算机上运行,​​但固定到不同的cpu核心。

1 个答案:

答案 0 :(得分:1)

您可以使用System.nanoTime()。这只是旧操作系统上的一个问题,例如运行Windows XP的多插槽机器。

在机器内。

  • 在一个帖子中写下时间戳
  • 读取另一个帖子中的时间戳。

注意:以这种方式测量延迟会产生严重的问题,例如协调遗漏。更好的方法是

  • 根据您要测量的目标吞吐量计算测试何时开始。
  • 如果还没有落后,那么就等到那个时间了。
  • 写下应该发送消息的时间而不是实际发送的时间。
  • 阅读时间戳并进行比较。
  • 记录分发。

您可以通过往返测试在机器之间使用System.nanoTime()

  • 发送时间戳
  • 让另一端发回。
  • 与当前时间比较。