[FUG-BR] Alto consumo de CPU do squid no FreeBSD 5.4
João Carlos Mendes Luís
jonny em jonny.eng.br
Seg Abr 11 15:04:10 BRT 2005
Isso tambem tinha no 4.x:
# DEVICE_POLLING adds support for mixed interrupt-polling handling
# of network device drivers, which has significant benefits in terms
# of robustness to overloads and responsivity, as well as permitting
# accurate scheduling of the CPU time between kernel network processing
# and other activities. The drawback is a moderate (up to 1/HZ seconds)
# potential increase in response times.
# It is strongly recommended to use HZ=1000 or 2000 with DEVICE_POLLING
# to achieve smoother behaviour.
# Additionally, you can enable/disable polling at runtime with the
# sysctl variable kern.polling.enable (defaults off), and select
# the CPU fraction reserved to userland with the sysctl variable
# kern.polling.user_frac (default 50, range 0..100).
#
# Not all device drivers support this mode of operation at the time of
# this writing. See polling(4) for more details.
Celso Viana wrote:
> João,
>
> O que faz a opção "DEVICE_POOLING"?
>
> Celso
>
> On Apr 8, 2005 6:16 PM, João Carlos Mendes Luís <jonny em jonny.eng.br> wrote:
>
>>
>>Alex S. Moura wrote:
>>
>>>Saudações,
>>>
>>>
>>>Alguém tem sugestões ou dicas para resolver o problema de alto consumo
>>>de CPU pelo squid no FreeBSD 5.4?
>>>Trata-se de um proxy webcache transparente, implementado com o pf e
>>>protocolo WCCP (Cisco).
>>
>>Eu ia perguntar "como assim alto consumo de CPU", quando vi o seu top...
>>
>>Se voce não tem um número absurdo de regras de ACL, a única explicação
>>que me resta é a implementação de WCCP no squid ser muito ineficiente.
>>É bem possível. Voce precisa mesmo do WCCP? Nao pode ser simplesmente
>>um proxy transparente e regras de policy routing desviando a porta 80
>>para um MAC externo?
>>
>>Outra sugestão: habilite um kernel com as opções:
>>
>>options HZ=1000
>>options DEVICE_POLLING
>>
>>Isso deve melhorar o tempo gasto com interrupções de rede.
>>
>>Aparentemente o número de MBUF clusters está razoável, embora eu não
>>goste do formato do FreeBSD. O FreeBSD 4 me dava o pico de uso dos mbuf
>>clusters, mas o 5.x não dá mais, e com isso perdemos uma ferramenta
>>estatística. Nao sei se isso tem algo a ver com o tal do sfbuf, que não
>>é comentado no livro do McKusick. Deve ser algo bem novo.
>>
>>Ah, segundo os seus dados abaixo, a placa de rede também compartilha
>>interrupções com o USB. Se não puder separar as interrupções, desligue
>>o USB. Acredito que não seja necessário num servidor de proxy. ;-)
>>
>>Uma outra otimização interessante é colocar um named local só para
>>atender o squid. Isso reduz os acessos pela rede, reduzindo a latencia,
>>e ainda guarda um cache local, evitando contaminar o cache externo com
>>dados do proxy transparente. Se a rede consumidora for local e usar o
>>mesmo named externo, ainda assim acho que vale a pena colocar um named
>>local com "forward first".
>>
>>Fora isso, parece tudo ok. CPU razoável, placa de rede muito boa,
>>quantidade de memória excelente. Só faltava ser disco SCSI, mas ao que
>>me parece, esse não é o problema da máquina.
>>
>>
>>>Dados relevantes:
>>>
>>>Hardware: P4 2.80GHz HT / 2GB RAM / (2x)80GB HDD / Intel PRO/1000 (em0)
>>>----------------------
>>>CPU: Intel(R) Pentium(R) 4 CPU 2.80GHz (2793.01-MHz 686-class CPU)
>>>Hyperthreading: 2 logical CPUs
>>>real memory = 2146631680 (2047 MB)
>>>avail memory = 2094350336 (1997 MB)
>>>cpu0: <ACPI CPU> on acpi0
>>>agp0: <Intel 82865 host to AGP bridge> mem 0xf8000000-0xfbffffff at
>>>device 0.0 on pci0
>>>em0: <Intel(R) PRO/1000 Network Connection, Version - 1.7.35> port
>>>0xcf80-0xcf9f mem
>>>0xfe9e0000-0xfe9fffff irq 18 at device 1.0 on pci2
>>>em0: Link is up 100 Mbps Full Duplex
>>>ad0: 76319MB <ST380011A/3.06> [155061/16/63] at ata0-master UDMA100
>>>ad1: 76319MB <ST380011A/3.06> [155061/16/63] at ata0-slave UDMA100
>>>-----------//----------------------//----------------------//-----------
>>>
>>>
>>>Software: FreeBSD 5.4-PRERELEASE, squid 2.5.9, pf
>>>
>>>Outras informações:
>>>------------------
>>>
>>># top -S
>>>--------
>>>last pid: 20950; load averages: 0.88, 0.99, 0.96 up 1+01:36:07
>>>12:11:52
>>>101 processes: 3 running, 65 sleeping, 33 waiting
>>>CPU states: 34.5% user, 0.0% nice, 51.6% system, 7.0% interrupt, 7.0%
>>>idle
>>>Mem: 210M Active, 1544M Inact, 180M Wired, 66M Cache, 112M Buf, 3008K Free
>>>Swap: 4069M Total, 120K Used, 4069M Free
>>>
>>>PID USERNAME PRI NICE SIZE RES STATE TIME WCPU CPU COMMAND
>>>3134 squid 122 0 193M 190M RUN 211:17 84.03% 84.03% squid
>>> 11 root 171 52 0K 8K RUN 934:47 6.98% 6.98% idle
>>> 35 root -44 -163 0K 8K WAIT 26:04 2.83% 2.83% swi1: net
>>> 28 root -68 -187 0K 8K WAIT 14:05 1.03% 1.03% irq18:
>>>em0 uhci2
>>> 36 root -28 -147 0K 8K WAIT 2:24 0.00% 0.00% swi5:
>>>clock sio
>>>3136 squid -4 0 1744K 1076K msgwai 2:07 0.00% 0.00% diskd
>>> 56 root 20 0 0K 8K syncer 2:00 0.00% 0.00% syncer
>>>-----------//----------------------//----------------------//-----------
>>>
>>># systat -vmstat 1
>>>------------------
>>> 3 users Load 1.15 1.00 0.95 Apr 6 12:18
>>>
>>>Mem:KB REAL VIRTUAL VN PAGER SWAP PAGER
>>> Tot Share Tot Share Free in out in out
>>>Act 209444 4416 261896 6540 82364 count
>>>All 2045952 7132 4500392 10168 pages
>>> Interrupts
>>>Proc:r p d s w Csw Trp Sys Int Sof Flt cow 1515 total
>>> 1 4 32 3680 730 5051 2944 1139 183612 wire 1: atkb
>>> 215036 act 3: sio1
>>>52.2%Sys 3.7%Intr 28.4%User 0.0%Nice 15.7%Idl 1569204 inact 4:
>>>sio0
>>>| | | | | | | | | | 79356 cache 6:
>>>fdc0
>>>==========================++>>>>>>>>>>>>>> 3008 free 128 8:
>>>rtc
>>> daefr 13: npx
>>>Namei Name-cache Dir-cache prcfr
>>>14: ata
>>> Calls hits % hits % react 15: ata
>>> 47 37 79 pdwak 1288 18: em0
>>> zfod pdpgs 99 0: clk
>>>Disks ad0 ad1 ofod intrn
>>>KB/t 0.00 0.00 %slo-z 114880 buf
>>>tps 0 0 1657 tfree 120 dirtybuf
>>>MB/s 0.00 0.00 100000 desiredvnodes
>>>% busy 0 0 90535 numvnodes
>>> 9789 freevnodes
>>>-----------//----------------------//----------------------//-----------
>>>
>>># netstat -mb
>>>-------------
>>>1188 mbufs in use
>>>1161/32768 mbuf clusters in use (current/max)
>>>0/3/4608 sfbufs in use (current/peak/max)
>>>2619 KBytes allocated to network
>>>0 requests for sfbufs denied
>>>0 requests for sfbufs delayed
>>>0 requests for I/O initiated by sendfile
>>>214 calls to protocol drain routines
>>>-----------//----------------------//-----------
>>>
>>># vmstat -i
>>>-----------
>>>interrupt total rate
>>>irq1: atkbd0 2129 0
>>>irq3: sio1 2 0
>>>irq4: sio0 2 0
>>>irq6: fdc0 14 0
>>>irq8: rtc 11852670 127
>>>irq13: npx0 1 0
>>>irq14: ata0 1145295 12
>>>irq15: ata1 58 0
>>>irq18: em0 uhci2 75076124 810
>>>irq0: clk 9260481 99
>>>Total 97336776 1051
>>>-----------//----------------------//-----------
>>>
>>># iostat
>>>--------
>>> tty ad0 ad1 cpu
>>>tin tout KB/t tps MB/s KB/t tps MB/s us ni sy in id
>>> 0 196 15.53 4 0.06 18.19 8 0.14 15 0 22 3 61
>>>-----------//----------------------//-----------
>>>
>>>
>>>Obrigado antecipadamente,
>>>
>>>Alex
>>>
>>>
>>>
>>>_______________________________________________
>>>Freebsd mailing list
>>>Freebsd em fug.com.br
>>>http://mail.fug.com.br/mailman/listinfo/freebsd_fug.com.br
>>
>> Jonny
>>
>>--
>>João Carlos Mendes Luís - Networking Engineer - jonny em jonny.eng.br
>>
>>
>>_______________________________________________
>>Freebsd mailing list
>>Freebsd em fug.com.br
>>http://mail.fug.com.br/mailman/listinfo/freebsd_fug.com.br
>>
>
>
> _______________________________________________
> Freebsd mailing list
> Freebsd em fug.com.br
> http://mail.fug.com.br/mailman/listinfo/freebsd_fug.com.br
_______________________________________________
Freebsd mailing list
Freebsd em fug.com.br
http://mail.fug.com.br/mailman/listinfo/freebsd_fug.com.br
Mais detalhes sobre a lista de discussão freebsd