UDP 调整 ubuntu-如何操作?

UDP 调整 ubuntu-如何操作?

我的服务器在运行 Ubuntu 10.04 时,UDP 数据包出现一些延迟。我应该如何更改 UDP 数据包的设置?我认为问题就在这里。

在我的/proc/sys/net/ipv4/udp_mem我有137088 182784 274176

udp_rmem_min: 4096
udp_wmem_min: 4096

/proc/sys/net/core/rmem_max  - 131071
/proc/sys/net/core/rmem_default  - 124928

/proc/sys/net/core/wmem_max  - 131071
/proc/sys/net/core/wmem_default  - 124928

我每秒从客户端向服务器发送 30 个数据包,并从服务器向客户端发送 30 个数据包。当有大量用户连接时,它们都会延迟到达。

答案1

您的问题与 UDP 不直接相关。问题在于您的一个核心已达到最大容量,而使用 UDP 的某些应用程序无法利用多个核心。您可以选择对其进行配置/优化,使其利用可用资源完成工作,或者重新设计它以使用多个线程或多个进程,以便它能够利用其他核心。

具体如何操作取决于代码中现在存在什么问题。一种可能性是代码大致如下所示:

while(1)
{
 do_udp_stuff(); // this is fairly simple
 do_other_stuff(); // this is complex
}

在这种情况下,解决方案要么进行优化do_other_stuff,要么将其移至不同的线程。

另一种可能性是代码如下所示:

while(1)
{
 do_some_work_which_generates_a_UDP_Packet();
 send_udp_patch();
}
// or
while(1)
{
 receive_UDP_packet();
 process_UDP_packet();
}

在这种情况下,解决方案可能是让多个线程执行生成 UDP 数据包或处理 UDP 数据包的工作。

基本上,您要么必须减少每个 UDP 数据包使用的 CPU 数量,要么需要通过在核心上分配工作来提高 CPU 利用率。

相关内容