环境
- Linux/红帽
- 6核
- 爪哇 7/8
- 10G
应用
- 它是一个低延迟的高频交易应用程序
- 通过多播 UDP 接收广播
- 有多个数据流
- 每个传入数据包大小小于 1K(固定大小)
- 应用程序延迟约为 4 微秒
建筑学
- 单独的应用程序线程映射到每个传入的多播流
- 使用本机字节中的 multicastsocket.receive() 从套接字接收数据
- 解析字节并准备好订单
问题
尽管可容忍的应用程序延迟约为 4 微秒,但我们无法获得理想的性能。我们认为这是因为网络延迟。
使用的调整步骤
- 增加了以下参数的大小:
- netdev_max_backlog
- NIC 环形缓冲区接收大小
- rmem_max
- tcp_mem
- socketreceivebuffer(在代码中)
问题:
- 我们观察到,在我们增加上述参数的值后,应用程序的性能会下降。建议优化的参数和推荐值是什么。请求优化传入广播的指南?
- 有没有办法在这样的环境中以更准确的方式测量网络延迟。请注意,UDP 发送方是外部实体(交换)
提前致谢