java - 是否可以检测内核生成 epoll 的时刻与 Sun JVM 读取它的时刻之间的时间差?

标签 java linux sockets nio epoll

即时间 A = 电压击中 NIC;时间 B = 来自 Java NIO 包的选择器能够为 I/O 选择套接字 channel 。

最佳答案

使用SO_TIMESTAMP并找到一个实际支持时间戳的 NIC 和一个支持分辨率优于毫秒的时间戳的 NIC。那么你应该有机会,如果你能让 Java 读取传入的 cmsg辅助数据。

如果没有良好的硬件支持,数据包将被内核标记为低分辨率不稳定计时器。

(编辑 #1) 我认为需要 2.6.30 或更新内核的 C 示例代码:

http://www.mjmwired.net/kernel/Documentation/networking/timestamping/timestamping.c

(编辑#2)用 C 语言确定内核到用户空间延迟的示例代码:

http://vilimpoc.org/research/ku-latency/

(编辑 #3) 我建议关注 J-OWAMP 项目,该项目依赖于高分辨率计时器和数据包延迟测试。 OWAMP 团队一直在插入 Linux 内核团队获得更好的 SO_TIMESTAMP 支持。

http://www.av.it.pt/jowamp/

关于java - 是否可以检测内核生成 epoll 的时刻与 Sun JVM 读取它的时刻之间的时间差?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4494625/

相关文章:

c - usbnet 驱动程序和网络子系统

linux - Linux bash 中的多重重命名

linux - 如何使用来自另一个文件的参数列表运行 Makefile

sockets - 远程关闭后 TCP 套接字的状态是什么?

java - BlackBerry项目中Timer的使用

linux - 如何在linux中打开系统日期、声音、显示属性?

c++ - Windows 上的非阻塞套接字在 send() 调用后不会返回

java - 内部静态类的新实例在 Lollipop 之前的设备中具有不同顺序的变量

java - 从字符串中提取 double 值获取 java.util.NoSuchElementException

java - OpenExr、Swig 和 Java