[FUG-BR] IRQ affinity com cpuset. Tanto faz hexa ou decimal no parâmetro -l #IRQ?

Kalil de Albuquerque Carvalho kalilcarvalho em yahoo.com
Quinta Fevereiro 11 12:38:22 BRST 2016






On Thursday, February 11, 2016 9:03 AM, Marcelo Gondim <gondim em bsdinfo.com.br> wrote:
Em 11/02/2016 09:24, Kalil de Albuquerque Carvalho escreveu:
>
>
>
>
> On Wednesday, February 10, 2016 5:52 PM, Marcelo Gondim <gondim em bsdinfo.com.br> wrote:
> Em 10/02/2016 16:16, Kalil de Albuquerque Carvalho escreveu:
>> Boa tarde a todos.
>>
>> Acabo de colocar em produção um roteador rodando FreeBSD 10.2-STABLE com Quagga version 0.99.24.1, compilado via Ports. Após a ativação e passado todo o trafego para esta maquina a carga do processador esta no limite do suportado pelo hardware e tudo indica ser problema de IRQ como mostra abaixo:
>>
>> 45 processes:  2 running, 42 sleeping, 1 waiting
>> CPU 0:  0.4% user,  0.0% nice,  0.0% system, 47.5% interrupt, 52.2% idle
>> CPU 1:  1.2% user,  0.0% nice,  0.8% system, 43.1% interrupt, 54.9% idle
>> CPU 2:  0.0% user,  0.0% nice,  1.2% system, 49.8% interrupt, 49.0% idle
>> CPU 3:  0.0% user,  0.0% nice,  0.0% system, 51.4% interrupt, 48.6% idle
>> CPU 4:  0.8% user,  0.0% nice,  0.8% system, 40.0% interrupt, 58.4% idle
>> CPU 5:  0.0% user,  0.0% nice,  0.8% system, 49.4% interrupt, 49.8% idle
>> CPU 6:  0.8% user,  0.0% nice,  0.8% system, 44.7% interrupt, 53.7% idle
>> CPU 7:  1.6% user,  0.0% nice,  0.8% system, 43.1% interrupt, 54.5% idle
>> Mem: 170M Active, 1118M Inact, 1300M Wired, 1550M Buf, 13G Free
>> Swap: 2862M Total, 2862M Free
>>
>> PID USERNAME    THR PRI NICE   SIZE    RES STATE   C   TIME    WCPU COMMAND
>> 11 root          8 155 ki31     0K   128K RUN     7 4087.9 413.04% [idle]
>> 12 root         65 -84    -     0K  1040K WAIT   255 318.8H 383.54% [intr]
>> 1841 root          1  35    0   679M   616M select  3  18.7H  17.97% /usr/local/sbin/bgpd -d
>> 14 root          1 -16    -     0K    16K -       3 465:17   0.88% [rand_harvestq]
>> 1611 root          1  20    0   177M   121M select  2 162:32   0.88% /usr/local/sbin/snmpd -p /var/run/net_snmpd.pid -c /usr/local/etc/snmpd.conf
>>
>>
>> Estava pesquisando formas de usar IRQ affility e me deparei com o cpuset. No manual, e exemplos pela Internet, e sendo colocado a informação da IRQ que o FreeBSD gera coma decimal. Quando faço busca por qual IRQ as minhas interfaces estão usando somente encontro em hexa como mostrado abaixo:
>>
>> igb4 pnpinfo vendor=0x8086 device=0x1f41 subvendor=0x8086 subdevice=0x1f41 class=0x020000 at slot=20 function=2 handle=\_SB_.PCI0.D010
>> Interrupt request lines:
>> 0x11c
>> 0x11d
>> 0x11e
>> 0x11f
>> 0x120
>> 0x121
>> 0x122
>> 0x123
>> 0x124
>>  
>> A minha pergunta é: O comando tem o mesmo efeito rodando no formato hexa ou tenho que converter para decimal?
>>
>> Example:
>>
>> Tanto faz?:
>>
>> #cpuset -l 0x11c -x 1
>> ou
>> #cpuset -l 284 -x 1
>>
> Olá Kalil,
>
> Nessa área eu posso ajudar rsrsrs
>
> Primeiramente qual o tráfego que está passando? Olhando o que vc postou
> seus cores tem bastante disponibilidade ainda.
> Você está sofrendo com o cpuset sem necessidade para achar as
> interrupções que as interfaces de rede estão usando use esse comando:
>
> # devinfo -r -v | less
>
> Aí procure a sua interface. Um exemplo abaixo que é a minha ix0:
>
>               ix0 pnpinfo vendor=0x8086 device=0x10fb subvendor=0x8086
> subdevice=0x000c class=0x020000 at slot=0 function=0
> handle=\_SB_.PCI0.BR12.S5F0
>                   Interrupt request lines:
>                       300
>                       301
>                       302
>                       303
>                       304
>                       305
>                       306
>                       307
>                       308
>
> Nesse meu caso vou usar as interrupções de 300 à 308. O -l eu digo o
> core e o -x a interrupção. Dependendo do tráfego tem que fazer o cpu
> affinity com as interrupções das interfaces senão dá problema e dos
> sérios com perdas de pacotes e tudo que tem direito.  :)
>
> /usr/bin/cpuset -l 0 -x 300
> /usr/bin/cpuset -l 1 -x 301
> /usr/bin/cpuset -l 2 -x 302
> /usr/bin/cpuset -l 3 -x 303
> /usr/bin/cpuset -l 4 -x 304
> /usr/bin/cpuset -l 5 -x 305
> /usr/bin/cpuset -l 0 -x 306
> /usr/bin/cpuset -l 1 -x 307
> /usr/bin/cpuset -l 2 -x 308
>
> Esse ai em cima é apenas um exemplo mas existem outros fatores que você
> precisa levar em consideração como motherboard, slots PCIe, distribuição
> do tráfego de entrada e saída.
>
>
> []´s
> Gondim
> -------------------------
> Histórico: http://www.fug.com.br/historico/html/freebsd/
> Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd
>
> Bom dia Gondim.
>
> Muito obrigado pela orientação. Porem como sou novato no uso do FreeBSD estou confuso quando a saia do top, achava que a interpretação era igual ao GNU/Linux. Digo isso porque a carga esta, na media, em 9 enquanto temos apenas oito núcleos. Analisando a saída do comando o que me preocupou foi a informação "interrupt" o qual me levou a acreditar que tínhamos um problema nas IRQ's. Você perguntou qual o nosso trafego, hoje gira em torno de 1.1Gbps. Quanto ao comando #devinfo -r -v | less o que é apresentado o seguinte:
>
> igb4 pnpinfo vendor=0x8086 device=0x1f41 subvendor=0x8086 subdevice=0x1f41 class=0x020000 at slot=20 function=2 handle=\_SB_.PCI0.D010
> Interrupt request lines:
> 0x11c
> 0x11d
> 0x11e
> 0x11f
> 0x120
> 0x121
> 0x122
> 0x123
> 0x124
>
>
> ainda em hexa. Posso seguir o seu exemplo e passar as interrupções desta forma ou devo converte-las em decimal?
>
> Atenciosamente,
Rapaz que interface de rede é essa que você tá usando? Eu sempre usei 
Intel e Broadcom e nunca aconteceu isso comigo rsrsrsr

Como você já tem um tráfego de 1.1Gbps seria interessante partir pra um 
LACP ou uma interface de 10GbE.
Aqui eu uso a Intel X520-SR2 que são 2 portas ópticas de 10GbE.

Quando você faz um: top -PSH   as interrupções aparecem também em hexa?

Agora muito estranho estar mostrando em hexa.


[]´s
Gondim

-------------------------
Histórico: http://www.fug.com.br/historico/html/freebsd/
Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd

Bom dia Gondim.

Estou utilizando as seguintes placas: chipset Intel i210AT nas portas 0 e 1 e Intel 88E1543 nas portas 2-5. O meu servidor é um ServerU L-800. Estamos fazendo uso de LACP, dois para ser exato, agregando as placas de três em três. Acredito que tenha feito algo errado, não habilitado alguma opção, pois onde procuro informações sobre o cpuset sempre é mostrado as IRQ's em decimal. Quando passo o comando que você indicou, o top -PSH, retorna decimal como esperado. Será que você poderia indicar alguma documentação para afinar as configurações do FreeBSD quando o uso é roteador?

Muito agradecido.


Mais detalhes sobre a lista de discussão freebsd