[FUG-BR] RES: freebsd 8.2 - tuning de rede

Luiz Otavio O Souza lists.br em gmail.com
Terça Março 15 08:46:39 BRT 2011


On Mar 15, 2011, at 12:28 AM, kmkz bleh wrote:

> Pessoal,
> 
> mais uma informação que acho que pode ajudar:
> 
> gw# sysctl net.inet.ip.intr_queue_drops
> net.inet.ip.intr_queue_drops: 36943


Esse é o número de pacotes descartados no processamento de "entrada":

(sys/netinet/ip_input.c)
    280 SYSCTL_PROC(_net_inet_ip, IPCTL_INTRQDROPS, intr_queue_drops,
    281     CTLTYPE_INT|CTLFLAG_RD, 0, 0, sysctl_netinet_intr_queue_drops, "I",
    282     "Number of packets dropped from the IP input queue");

E que depende do tamanho máximo da fila, configurado aqui:

# sysctl net.inet.ip.intr_queue_maxlen
net.inet.ip.intr_queue_maxlen: 256

(256 me parece pouco para um ambiente de alto trafego, com várias placas/interfaces)

Esses pacotes são enfileirados para processamento pelo 'netisr' (caso isso ajude com os tunings...)

O netisr tem também suas próprias filas (que eu não parei para olhar o que cada uma faz...):

# sysctl net.isr
net.isr.numthreads: 1
net.isr.maxprot: 16
net.isr.defaultqlimit: 256
net.isr.maxqlimit: 10240
net.isr.bindthreads: 0
net.isr.maxthreads: 1
net.isr.direct: 1
net.isr.direct_force: 1
# sysctl net.route
net.route.netisr_maxqlen: 256



> gw# vmstat -i
> interrupt                          total       rate
> irq28: ciss0                       73109         67
> irq1: atkbd0                          10          0
> irq17: atapci0+                      242          0
> irq22: uhci0                           2          0
> cpu0: timer                      2152906       1998
> irq256: em0                      2386318       2215
> irq257: em0                        21311         19
> irq258: em0                            2          0
> irq259: em1                          665          0
> irq260: bce0                    11311742      10503

O rate de interrupcoes nessa placa esta bem alto, experimenta ligar o polling nessa interface e faça alguns testes de como ela se comporta.


> irq261: bce1                       59430         55
> irq262: em2                      1954193       1814
> irq263: em2                      2460842       2284
> irq264: em2                            1          0
> irq265: em3                      6807389       6320
> irq266: em3                      6870682       6379
> irq267: em3                           14          0

Aqui também pode compensar...

> irq268: bge0                     1936273       1797
> irq269: bge1                     1504853       1397
> cpu2: timer                      2144394       1991
> cpu3: timer                      2144549       1991
> cpu1: timer                      2144367       1991
> Total                           43973294      40829
> Outra coisa, vi que meu servidor deu PANIC com a msg abaixo:
> 
> reboot after panic: kmem_malloc(4096): kmem_map too small: 335544320 total
> allocated
> 
> Com 4GB de RAM, o que eu devo fazer pra resolver esse problema? Qual valor
> devo colocar no KVA_PAGES pra compilar o kernel, seria 1024? Meu kernel ta
> compilado com a opção PAE.



Só uma pergunta... você esta utilizando ZFS nesse servidor ? (esse erro "kmem_map too small" é muito comum nessa situação, embora eu não acredite que você esteja utilizando ZFS em um router...)

Não faz isso não... O PAE não faz o que você pensa que ele faz... por favor remova ele... é melhor você não aproveitar toda a memória em i386 do que utilizar o PAE (geralmente). Fiquei com o i386 - sem PAE - ou vá para o amd64 de vez.

No amd64 você não terá problemas (ou no máximo, como se faz com o ZFS, será preciso limitar o valor máximo para o kernel).

Att.,
Luiz


Mais detalhes sobre a lista de discussão freebsd