gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 10:33:26 26 4
gpt4 key购买 nike

我听说 System.nanoTime() 在 Java + Linux 中跨 CPU 内核不一致。那么我如何测量单向消息在环回上的延迟,换句话说,在同一台机器上。流程是:

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

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

最佳答案

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

在机器内。

  • 在一个线程中写下时间戳
  • 读取另一个线程中的时间戳。

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

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

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

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

关于java - 在 Java + Linux 中,测量跨 CPU 内核延迟的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38703364/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com