800mhz CPU only 32mbps throughput



  • Hi,
    I've been running PFSense for about 6 months now and I'm really happy with it, good job everyone who puts so much effort into it  :) . Anyway I've had this problem ever since I've deployed it. I have 2 LAN interfaces that connect to seperate subnets each have 3com 100mbps NICS. When I use any type of traffic (single tcp session) I can only pass around 32mbps of data through the PFSENSE as the CPU usage goes up to 100% at this rate. I'm very surprised because thats what the hardware page said a WRAP box would do and this is SLIGHTLY mroe powerful (800mhz celeron, 512mb ram). Ideas or similar experiences?



  • I have a P3 @ 733Mhz and I have about 40Mbit/s. I don't use traffic shaping it use more ressource.
    My interfaces are : Intel 82557 Pro/100 Ethernet and D-link DFE 580 TX (thanks to ebay  :))



  • I can get around 90 mbit/s with a 1GHz C3 Nehemia CPU with ViaRhine nics in default config benched with netio WAN to LAN. I would say that both of your machines should be able to push more bandwidth than what you actually see. However, depending on the traffic you probably see less. Make sure that you are not using shared interrupts (you can find out by going to http://<pfsense-ip>/status.php; check dmesg at the very bottom of this page). Another option that you could try is enabling polling mode at system>advanced to soo if this helps a bit (IIRC the CPU-Usage at the statuspage won't be calculated correctly if polling is enabled but this is only cosmetic).</pfsense-ip>



  • This is my DMESG. How can I control shared interrupts ?
    Device polling add a delay ??

    Copyright (c) 1992-2007 The FreeBSD Project.
    Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
    	The Regents of the University of California. All rights reserved.
    FreeBSD is a registered trademark of The FreeBSD Foundation.
    FreeBSD 6.2-RELEASE-p1 #0: Sun Feb 25 14:53:18 EST 2007
        sullrich@builder6.pfsense.com:/usr/obj.pfSense/usr/src/sys/pfSense.6
    MPTable: <compaq  deskpro =""  ="">
    Timecounter "i8254" frequency 1193182 Hz quality 0
    CPU: Intel Pentium III (730.97-MHz 686-class CPU)
      Origin = "GenuineIntel"  Id = 0x681  Stepping = 1
      Features=0x387fbff <fpu,vme,de,pse,tsc,msr,pae,mce,cx8,apic,sep,mtrr,pge,mca,cmov,pat,pse36,pn,mmx,fxsr,sse>real memory  = 267386880 (255 MB)
    avail memory = 251928576 (240 MB)
    ioapic0: Changing APIC ID to 8
    ioapic0: Assuming intbase of 0
    ioapic0 <version 2.0=""> irqs 0-23 on motherboard
    wlan: mac acl policy registered
    kbd1 at kbdmux0
    ath_hal: 0.9.17.2 (AR5210, AR5211, AR5212, RF5111, RF5112, RF2413, RF5413)
    cpu0 on motherboard
    pcib0: <mptable host-pci="" bridge=""> pcibus 0 on motherboard
    pci0: <pci bus=""> on pcib0
    agp0: <intel 82815="" (i815="" gmch)="" svga="" controller=""> mem 0x44000000-0x47ffffff,0x40300000-0x4037ffff irq 16 at device 2.0 on pci0
    pcib1: <mptable pci-pci="" bridge=""> at device 30.0 on pci0
    pci2: <pci bus=""> on pcib1
    pcib2: <pci-pci bridge=""> at device 8.0 on pci2
    pci3: <pci bus=""> on pcib2
    ste0: <d-link 10="" dl10050="" 100basetx=""> port 0x1000-0x107f irq 16 at device 4.0 on pci3
    miibus0: <mii bus=""> on ste0
    ukphy0: <generic ieee="" 802.3u="" media="" interface=""> on miibus0
    ukphy0:  10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto
    ste0: Ethernet address: 00:0d:88:70:dc:d4
    ste1: <d-link 10="" dl10050="" 100basetx=""> port 0x1080-0x10ff irq 17 at device 5.0 on pci3
    miibus1: <mii bus=""> on ste1
    ukphy1: <generic ieee="" 802.3u="" media="" interface=""> on miibus1
    ukphy1:  10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto
    ste1: Ethernet address: 00:0d:88:70:dc:d5
    ste2: <d-link 10="" dl10050="" 100basetx=""> port 0x1400-0x147f irq 18 at device 6.0 on pci3
    miibus2: <mii bus=""> on ste2
    ukphy2: <generic ieee="" 802.3u="" media="" interface=""> on miibus2
    ukphy2:  10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto
    ste2: Ethernet address: 00:0d:88:70:dc:d6
    ste3: <d-link 10="" dl10050="" 100basetx=""> port 0x1480-0x14ff irq 19 at device 7.0 on pci3
    miibus3: <mii bus=""> on ste3
    ukphy3: <generic ieee="" 802.3u="" media="" interface=""> on miibus3
    ukphy3:  10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto
    ste3: Ethernet address: 00:0d:88:70:dc:d7
    fxp0: <intel 100="" 82557="" pro="" ethernet=""> port 0x2000-0x201f mem 0x40400000-0x40400fff,0x40000000-0x400fffff irq 18 at device 10.0 on pci2
    miibus4: <mii bus=""> on fxp0
    inphy0: <i82555 10="" 100="" media="" interface=""> on miibus4
    inphy0:  10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto
    fxp0: Ethernet address: 00:a0:c9:42:0a:95
    isab0: <pci-isa bridge=""> at device 31.0 on pci0
    isa0: <isa bus=""> on isab0
    atapci0: <intel ich="" udma66="" controller=""> port 0x1f0-0x1f7,0x3f6,0x170-0x177,0x376,0x3460-0x346f at device 31.1 on pci0
    ata0: <ata 0="" channel=""> on atapci0
    ata1: <ata 1="" channel=""> on atapci0
    uhci0: <intel 82801aa="" (ich)="" usb="" controller=""> port 0x3440-0x345f irq 19 at device 31.2 on pci0
    uhci0: [GIANT-LOCKED]
    usb0: <intel 82801aa="" (ich)="" usb="" controller=""> on uhci0
    usb0: USB revision 1.0
    uhub0: Intel UHCI root hub, class 9/0, rev 1.00/1.00, addr 1
    uhub0: 2 ports with 2 removable, self powered
    pci0: <multimedia, audio=""> at device 31.5 (no driver attached)
    pmtimer0 on isa0
    orm0: <isa option="" roms=""> at iomem 0xc0000-0xc7fff,0xe0000-0xeffff on isa0
    atkbdc0: <keyboard controller="" (i8042)=""> at port 0x60,0x64 on isa0
    atkbd0: <at keyboard=""> irq 1 on atkbdc0
    kbd0 at atkbd0
    atkbd0: [GIANT-LOCKED]
    fdc0: <enhanced floppy="" controller=""> at port 0x3f0-0x3f5,0x3f7 irq 6 drq 2 on isa0
    fdc0: [FAST]
    ppc0: <parallel port=""> at port 0x378-0x37f irq 7 on isa0
    ppc0: SMC-like chipset (ECP/EPP/PS2/NIBBLE) in COMPATIBLE mode
    ppc0: FIFO with 16/16/13 bytes threshold
    ppbus0: <parallel port="" bus=""> on ppc0
    lpt0: <printer> on ppbus0
    lpt0: Interrupt-driven port
    ppi0: <parallel i="" o=""> on ppbus0
    sc0: <system console=""> at flags 0x100 on isa0
    sc0: VGA <16 virtual consoles, flags=0x300>
    sio0 at port 0x3f8-0x3ff irq 4 flags 0x10 on isa0
    sio0: type 16550A
    sio1 at port 0x2f8-0x2ff irq 3 on isa0
    sio1: type 16550A
    vga0: <generic isa="" vga=""> at port 0x3c0-0x3df iomem 0xa0000-0xbffff on isa0
    unknown: <pnp0401> can't assign resources (port)
    unknown: <pnp0501> can't assign resources (port)
    unknown: <pnp0501> can't assign resources (port)
    unknown: <pnp0700> can't assign resources (port)
    unknown: <pnp0c01> can't assign resources (memory)
    unknown: <pnp0100> can't assign resources (irq)
    speaker0: <pc speaker=""> at port 0x61 on isa0
    unknown: <pnp0303> can't assign resources (port)
    Timecounter "TSC" frequency 730965407 Hz quality 800
    Timecounters tick every 1.000 msec
    Fast IPsec: Initialized Security Association Processing.
    ad0: 6150MB <ibm dhea-36480="" he8da41a=""> at ata0-master UDMA33
    Trying to mount root from ufs:/dev/ad0s1a</ibm></pnp0303></pc></pnp0100></pnp0c01></pnp0700></pnp0501></pnp0501></pnp0401></generic></system></parallel></printer></parallel></parallel></enhanced></at></keyboard></isa></multimedia,></intel></intel></ata></ata></intel></isa></pci-isa></i82555></mii></intel></generic></mii></d-link></generic></mii></d-link></generic></mii></d-link></generic></mii></d-link></pci></pci-pci></pci></mptable></intel></pci></mptable></version></fpu,vme,de,pse,tsc,msr,pae,mce,cx8,apic,sep,mtrr,pge,mca,cmov,pat,pse36,pn,mmx,fxsr,sse></compaq >
    


  • 2 of your nics share the same interrupt:

    ...
    ste2: <d-link 10="" dl10050="" 100basetx=""> port 0x1400-0x147f irq 18 at device 6.0 on pci3
    ...
    fxp0: <intel 100="" 82557="" pro="" ethernet=""> port 0x2000-0x201f mem 0x40400000-0x40400fff,0x40000000-0x400fffff irq 18 at device 10.0 on pci2
    ...</intel></d-link>
    

    Try to disable as much hardware in the bios as possible to free up ressources (like parallelports, serial poerts, …). Maybe you can get rid of the interruptsharing.



  • actually how do i go about testing the max throughput for my setup?



  • Try a tool like netio: http://freshmeat.net/projects/netio/



  • thanks! will try it out



  • Also, try Intel nics.  3Com nics are generally regarded as bottom of the bargain barrel cards.

    –Bill



  • I do some tests :
    Wan=> Lan : At 13Mb/s (this is my internet connection throughput) :
    Snort uses 33% of CPU  and processor utilization about : 50-60% (total, snort include)

    And LAN=>OPT1 I estimate maximal throughput at 40Mb/s without snort.

    I have some share IRQ, I tried to disable serial port, audio, usb …. and I still have share IRQ ....how can I resolve it ?
    thx for your help ;)



  • Reset the asigned ressources in the bios or try to manually assign them. Also swapping pci slots might help.


Log in to reply