C++ 内核更新到低延迟后,SendTo调用速度变慢
我已经将Ubuntu服务器上的内核从3.13.0-32-generic更新为3.19.0-031900-lowlatency。我在这个服务器上运行一个C++应用程序,它处理通过多播接收的大量数据,进行一些处理并对结果进行多播。 低延迟内核无疑提高了性能。对于每个数据包的处理,处理数量减少了30% 但在较高的百分位上,出版时间变得更糟,。为了计算发布时间,我在SendTo()调用前后使用计数器。以下是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
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)
确定此调用是否会阻塞?