UDP tuning ubuntu - como?

3

Estou tendo alguns atrasos com o meu servidor executando o Ubuntu 10.04 nos meus pacotes UDP. O que devo fazer para alterar as configurações definidas para os pacotes UDP? Eu acho que o problema está aí.

No meu /proc/sys/net/ipv4/udp_mem , tenho 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

Estou enviando 30 pacotes por segundo do cliente para o servidor e do servidor para o cliente. Eles estão chegando atrasados quando há muitos usuários conectados.

    
por EiTkoCaT 10.09.2011 / 21:34

1 resposta

1

O seu problema não está relacionado diretamente com o UDP. O problema é que um de seus núcleos está no máximo e alguns aplicativos envolvidos no seu uso do UDP não podem tirar proveito de mais de um núcleo. Suas escolhas são fazer um perfil / otimizá-lo para que ele faça seu trabalho com os recursos disponíveis ou para reprojetá-lo para usar vários encadeamentos ou vários processos para que ele possa aproveitar os outros núcleos.

Exatamente como você faz isso depende do que está errado com o código agora. Uma possibilidade é se o código parecer mais ou menos assim:

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

Nesse caso, a solução é otimizar o do_other_stuff ou movê-lo para um thread diferente.

Outra possibilidade é se o código se parece com isso:

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

Neste caso, a solução pode ser ter mais de um thread fazendo o trabalho que gera o pacote UDP ou processando o pacote UDP.

Basicamente, você precisa reduzir a quantidade de CPU usada por pacote UDP ou aumentar a eficiência de utilização da CPU distribuindo o trabalho pelos núcleos.

    
por David Schwartz 10.09.2011 / 22:16

Tags