netperf udp com pacotes pequenos no link de 10g é limitado pelo ksoftirqd

1

Eu quero preencher um link de 10Gbps com pacotes udp muito pequenos (64B).

Eu uso o seguinte comando

 for i in 1 2 3 4 5 6 7 8; do netperf -H 192.168.56.2 -p 12865 -t UDP_STREAM -l 60 -C -c -- -m 64 -s 16M -S 16M -R 1 &  done

Mas não consigo mais do que 250Mbps de taxa de transferência. Para pequenas mensagens, vi que um segmento chamado ksoftirqd está usando 100% de um núcleo da CPU no receptor. Então minha pergunta é

  • Como diminuir o uso da CPU do ksoftirqd para pequenas mensagens?

Configuração atual: Eu tenho duas máquinas Ubuntu (8 núcleos e 16 núcleos) com NICs Intel X520-T2 e kernel 3.11 conectado com um switch Juniper 10G. Estas são as mudanças que eu tenho para o sysctlcfg.conf

net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_sack = 0
net.core.rmem_max = 268435456
net.core.wmem_max = 268435456
net.ipv4.tcp_rmem = 4096 87380 134217728
net.ipv4.tcp_wmem = 4096 65536 134217728
net.core.netdev_max_backlog = 250000
net.core.rmem_max = 134217728
net.core.wmem_max = 134217728
net.ipv4.tcp_no_metrics_save = 1
net.ipv4.tcp_congestion_control = htcp

Também aumentei o tamanho do txqueue do NIC

/sbin/ifconfig eth0 txqueuelen 10000

Eu procurei a coalescência de interrupção usando o parâmetro rx-usecs, mas aumentando o agravamento da taxa de transferência.

    
por Masood_mj 17.10.2014 / 01:10

0 respostas