C++ 内核更新到低延迟后,SendTo调用速度变慢

C++ 内核更新到低延迟后,SendTo调用速度变慢,c++,performance,sockets,linux-kernel,low-latency,C++,Performance,Sockets,Linux Kernel,Low Latency,我已经将Ubuntu服务器上的内核从3.13.0-32-generic更新为3.19.0-031900-lowlatency。我在这个服务器上运行一个C++应用程序,它处理通过多播接收的大量数据,进行一些处理并对结果进行多播。 低延迟内核无疑提高了性能。对于每个数据包的处理,处理数量减少了30% 但在较高的百分位上,出版时间变得更糟,。为了计算发布时间,我在SendTo()调用前后使用计数器。以下是SendTo调用的性能数字(以微秒为单位) GenericKernel LowLatencyKer

我已经将Ubuntu服务器上的内核从3.13.0-32-generic更新为3.19.0-031900-lowlatency。我在这个服务器上运行一个C++应用程序,它处理通过多播接收的大量数据,进行一些处理并对结果进行多播。 低延迟内核无疑提高了性能。对于每个数据包的处理,处理数量减少了30%

但在较高的百分位上,出版时间变得更糟,。为了计算发布时间,我在SendTo()调用前后使用计数器。以下是SendTo调用的性能数字(以微秒为单位)

GenericKernel LowLatencyKernel百分位数

102.92.6

50 2.9 2.7

95 3.6 4.8

99 4.6 6.2


任何关于SendTo呼叫为何变慢的见解。还有,可以做些什么来改进它,使其至少与使用通用内核时相同。

请注意,低延迟内核肯定有一些缺点(否则,为什么不将其作为通用内核使用),我认为您已经找到了。另外,如果
发送到
的时间如此重要,为什么不使用
MSG\u DONTWAIT
作为标志,并使用
select(2)
确定此调用是否会阻塞?