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

Responder a