【问题标题】:how to achieve best tcpip socket data-rate performance如何获得最佳 tcpip 套接字数据速率性能
【发布时间】:2018-12-24 02:27:47
【问题描述】:

为每个 tcp 数据包打包尽可能多的数据显然会降低开销的相对权重。增加缓冲区大小可以提高对 CPU 使用峰值的鲁棒性。

但是还可以做些什么来实现最高数据速率?

增加数据读取线程的优先级是个好主意吗?如果使用最高优先级,该线程是否会与网络驱动程序竞争 CPU 使用率并实际上损害性能?

就可实现的数据速率而言,阻塞还是非阻塞最好?

在非常高的数据速率下,是否可以在缓冲区达到 90% 时检测到接收缓冲区的溢出并触发高优先级读取?

通过 tcpip 套接字实现高数据速率的其他技术?

【问题讨论】:

    标签: linux windows sockets tcp


    【解决方案1】:

    一种方法是使用繁忙轮询从 NIC 获取数据。这可以通过减少中断开销来提高数据速率。这是在 DPDK 等高性能数据包处理框架中完成的。

    另一种方法是避免将数据包从内核空间复制到用户空间。我不知道这是否可能在您的情况下。通过将内核内存映射到用户空间内存来避免复制数据包。将数据复制到用户空间是网络堆栈中最耗时的步骤之一。这也是在 DPDK 中完成的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-09-11
      • 2023-03-29
      • 1970-01-01
      • 2011-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多