[FUG-BR] RES: freebsd 8.2 - tuning de rede
Luiz Otavio O Souza
lists.br em gmail.com
Quarta Março 16 08:09:08 BRT 2011
On Mar 15, 2011, at 9:24 AM, kmkz bleh wrote:
>>
>>> 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.
>>
>
> Exatamente. Está muito alto mesmo. Acho que já usei polling a uns tempos
> atrás mas parece que a situação piorou... comecei a ter mais perda de
> pacote. Não digo com certeza porque já faz algum tempo, mas vou ver se ativo
> polling denovo pra ver.
>
> A propósito, bce suporta polling?
>
É... a bce não suporta polling... porém há uma luz no fim do tunel.. parece que tem um firmware novo disponível para ela.
A má noticia é que isso só esta disponível no -current, mas você pode copiar os drivers na mão para o 8-stable (ou 8-release tanto faz..): cp /current/src/sys/dev/bce/* /stable/src/sys/dev/bce (isso vai acontecer naturalmente como parte do processo de desenvolvimento - mas não tem dia para acontecer).
Uma outra coisa que importante para redes gigabit é _NUNCA_ (repito NUNCA) force a velocidade nessas portas. As interfaces gigabit PRECISAM da auto-negociação ativa para o correto funcionamento. O formato dessas interfaces é diferente das antigas 10/100 que geralmente funcionavam melhor com velocidades fixas. Na portas gigabit há necessidade que uma ponta seja nomeada como MASTER e a outra ponta SLAVE e nem todos drivers suportam essas configurações feitas manualmente.
Se sua conexão gigabit não funciona em 'autoselect' você tem algum 'outro' problema ai (cabos, a própria interface de rede, switches, etc.).
Voltando a bce, aqui esta uma lista das ultimas correções nesse driver:
------------------------------------------------------------------------
r218529 | davidch | 2011-02-10 22:41:49 -0200 (Thu, 10 Feb 2011) | 4 lines
- Updated firmware which improves small packet performance.
MFC after: 2 weeks
------------------------------------------------------------------------
r218527 | davidch | 2011-02-10 20:36:23 -0200 (Thu, 10 Feb 2011) | 6 lines
- Added error checking to nvram read functions.
- Minor style updates.
Submitted by: gcooper em freebsd.org
MFC after: 2 weeks
------------------------------------------------------------------------
r218423 | davidch | 2011-02-07 21:00:24 -0200 (Mon, 07 Feb 2011) | 12 lines
- Added systcls for header splitting, RX/TX buffer count, interrupt
coalescing, strict RX MTU, verbose output, and shared memory debug.
- Added additional debug counters (VLAN tags and split header frames).
- Updated debug counters to 64 bit definitions.
- Updated l2fhdr bit definitions.
- Combined RX buffer sizing into a single function.
- Added buffer size and interrupt coalescing settings to adapter info
printout.
Submitted by: davidch
MFC after: 2 weeks
[snip]
>
>>
>>
>>> 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).
>>
>
> Não, não estou usando ZFS não.
>
> Eu vi mesmo que o pessoal que teve esse problema utilizava ZFS. Não é o meu
> caso. Vi também que tem uma sysctl pra aumentar via loader.conf, mas que pra
> utiliza-la precisa setar o KVA_PAGES no kernel.
>
> O problema é que mesmo sem o PAE ocorre o panic, pelo menos no FreeBSD 8.2
> aconteceu...
>
Ok...
Tente adicionar isso ai:
# cat /boot/loader.conf
vm.kmem_size="6G"
Mas ajustando o tamanho máximo para o seu ambiente (um pouco menos que a memória disponível - esse exemplo é de um servidor com 8G de RAM, ZFS e amd64).
No caso do sistema de 32bits você pode limitar esse valor um pouco abaixo dos 2GB (limite de memória do kernel).
Att.,
Luiz
Mais detalhes sobre a lista de discussão freebsd