即。时间A =电压击中NIC;时间B =来自Java的选择器NIO包能够为I / O选择套接字通道。
答案 0 :(得分:4)
使用SO_TIMESTAMP并找到实际支持时间戳的NIC,以及支持时间戳优于毫秒分辨率的NIC。那么你应该有机会让Java读取传入的cmsg
辅助数据。
如果没有良好的硬件支持,数据包将被内核标记,很可能是低分辨率的不稳定计时器。
(编辑#1) C中需要2.6.30或更新内核的示例代码我认为:
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支持。
答案 1 :(得分:0)
你需要使用类似tcpdump之类的内容,然后关联你的应用程序日志和“嗅探器”日志之间的时间戳来确定这一点,单独使用jvm是不可能的。