Hi Bill,

so I followed your advise and disabled the hyperthreading in the BIOS (No APIC settings there).

So here's what's happening. First of all, I realized how dumb I am, since I always looked only

on the "outside" of the wan interface when watching the throughput, so all this time it was actually 30kpps, not 15, but still much less than wanted.

Then, after disabling the hyperthreading, I started to see more realistic picture with CPUs, as it started to only show 2 of them while each has an emX taskq process. So now, when I see 35% on each CPU, the "global" CPU is also showing 35%, while before it'd show 17%, but the 2 remaining CPUs would always show 100% idle.


Also, I believe that my loader.conf settings with

hw.em.rxd="4096"
hw.em.txd="4096"

helped with all those errors on the interfaces I used to see during the high load, so this part is good.

Now, for the bad part. I got to a total of almost 50kpps, and that was via 70% CPU. Which probably means that at about 70kpps or so I'd hit 100%. Which actually was a lot like what you said about Xeons (you said they maxed out around 80kpps).

Then I looked at the rates you provided and I just want to understand something. The emX taskq is supposed to take one of the available CPUs and probably stick with it, right? Then if on one of the interfaces you have a very high load, then this process will take a 100% of that CPU or core and it will hit the limit? Do I get this right? It means also that in your situation , while you have only 14% load on the "general" CPU, the core that handles the em1 might actually be somewhere around 55% and the most it will take is about 70-80kpps. In that case, what is the solution? And if I'm wrong, how helpful will it be for me to replace the server with the one like yours or similar? Will I benefit from more than 2 CPUs/cores? Just remember, all I need is a dual port NIC, which handles in and out - that's it.

And the last question. I saw that even though you have Intel NICs, you still have interrupt on CPU. My RRD graphs show "0" on the interrupt. Is this normal? I don't have polling enabled.


Thanks,


Lenny.


P.S. basically, according to my calculations, I need ~150kpps throughput.




Bill Marquette wrote:

On Wed, Mar 18, 2009 at 7:32 AM,  <five2one.le...@gmail.com> wrote:

Just as an FYI and comparison proving that FreeBSD 6.2 handles this
w/out blinking.  Unfortunately, I don't have any boxes running 7.x at
this time.

  bwm-ng v0.6 (probing every 0.500s), press 'h' for help
  input: getifaddrs type: rate
  -         iface                   Rx                   Tx                Total
  ==============================================================================
              em0:         3801.54 P/s          4210.02 P/s          8011.56 P/s
              em1:        19377.65 P/s         18855.49 P/s         38233.14 P/s
              em2:          111.75 P/s          7231.21 P/s          7342.97 P/s
              em3:            1.93 P/s             1.93 P/s             3.85 P/s
              lo0:            0.00 P/s             0.00 P/s             0.00 P/s


last pid: 67441;  load averages:  0.47,  0.53,  0.54
                    up 241+10:41:12 13:33:00
48 processes:  1 running, 28 sleeping, 19 zombie
CPU states:  0.8% user,  0.0% nice,  1.3% system, 11.5% interrupt, 86.5% idle
Mem: 22M Active, 1298M Inact, 243M Wired, 112M Buf, 1696M Free
Swap: 2048M Total, 2048M Free


This is on an HP DL385G5 with two dual-core Opteron 2218 cpu's and
dual port Intel PCI-e LC fiber cards (as well as a quad port copper
card...the PPS rates above are going over the fiber card).  The
operating system version is FreeBSD 6.2 - the same kernel (and some of
the same patches) that pfSense 1.2.0 runs.


# sysctl net.isr
net.isr.direct: 0
net.isr.count: 1942552898
net.isr.directed: 0
net.isr.deferred: 1942552900
net.isr.queued: 31395
net.isr.drop: 0
net.isr.swi_count: 347040539

(all 4 nics running the same settings)
# sysctl dev.em.0
dev.em.0.%desc: Intel(R) PRO/1000 Network Connection Version - 6.2.9
dev.em.0.%driver: em
dev.em.0.%location: slot=0 function=0 handle=\_SB_.PCI0.EXB0.PES5
dev.em.0.%pnpinfo: vendor=0x8086 device=0x105f subvendor=0x8086
subdevice=0x125f class=0x020000
dev.em.0.%parent: pci5
dev.em.0.debug_info: -1
dev.em.0.stats: -1
dev.em.0.rx_int_delay: 0
dev.em.0.tx_int_delay: 66
dev.em.0.rx_abs_int_delay: 66
dev.em.0.tx_abs_int_delay: 66
dev.em.0.rx_processing_limit: 100


net.inet.ip.intr_queue_maxlen: 5000
net.inet.ip.intr_queue_drops: 0


--Bill

---------------------------------------------------------------------
To unsubscribe, e-mail: support-unsubscr...@pfsense.com
For additional commands, e-mail: support-h...@pfsense.com

Commercial support available - https://portal.pfsense.org


Reply via email to