[FUG-BR] Alto consumo de CPU do squid no FreeBSD 5.4

João Carlos Mendes Luís jonny em jonny.eng.br
Sex Abr 8 19:16:36 BRT 2005



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




Mais detalhes sobre a lista de discussão freebsd