Freebsd IP Forwarding performance (question, and some info) [7-stable, current, em, smp]

Paul paul at gtcomm.net
Wed Jul 2 00:06:59 UTC 2008


Apparently lagg hasn't been giant fixed :/   Can we do something about 
this quickly? 
with adaptive giant i get more performance on lagg but the cpu usage is 
smashed 100%
I get about 50k more pps per interface  (so 150kpps total which STILL is 
less than a single gigabit port)
Check it out

68 processes:  9 running, 41 sleeping, 18 waiting
CPU:  0.0% user,  0.0% nice, 89.5% system,  0.0% interrupt, 10.5% idle
Mem: 8016K Active, 6192K Inact, 47M Wired, 108K Cache, 9056K Buf, 1919M Free
Swap: 8192M Total, 8192M Free

  PID USERNAME PRI NICE   SIZE    RES STATE  C   TIME   WCPU COMMAND
   38 root     -68    -     0K    16K CPU1   1   3:29 100.00% em2 taskq
   37 root     -68    -     0K    16K CPU0   0   3:31 98.78% em1 taskq
   36 root     -68    -     0K    16K CPU3   3   2:53 82.42% em0 taskq
   11 root     171 ki31     0K    16K RUN    2  22:48 79.00% idle: cpu2
   10 root     171 ki31     0K    16K RUN    3  20:51 22.90% idle: cpu3
   39 root     -68    -     0K    16K RUN    2   0:32 16.60% em3 taskq
   12 root     171 ki31     0K    16K RUN    1  20:16  2.05% idle: cpu1
   13 root     171 ki31     0K    16K RUN    0  20:25  1.90% idle: cpu0

            input          (em0)           output
   packets  errs      bytes    packets  errs      bytes colls
    122588     0    7355280          0     0          0     0
    123057     0    7383420          0     0          0     0

            input          (em1)           output
   packets  errs      bytes    packets  errs      bytes colls
    174917 11899   10495032          2     0        178     0
    173967 11697   10438038          2     0        356     0
    174630 10603   10477806          2     0        268     0

            input          (em2)           output
   packets  errs      bytes    packets  errs      bytes colls
    175843  3928   10550580          0     0          0     0
    175952  5750   10557120          0     0          0     0


Still less performance than single gig-e.. that giant lock really sucks 
, and why on earth would LAGG require that.. It  seems so simple to fix :/
Anyone up for it:) I wish I was a programmer sometimes, but network 
engineering will have to do. :D



Julian Elischer wrote:
> Paul wrote:
>> Is PF better than ipfw?  iptables almost has no impact on routing 
>> performance unless I add a swath of rules to it and then it bombs
>> I need maybe 10 rules max  and I don't want 20% performance drop for 
>> that.. :P
>
> well lots of people have wanted to fix it, and I've investigated
> quite a lot but it takes someone with 2 weeks of free time and
> all the right clue. It's not inherrent in ipfw but it needs some
> TLC from someone who cares :-).
>
>
>
>> Ouch! :)  Is this going to be fixed any time soon?  We have some 
>> money that can be used for development costs to fix things like this 
>> because
>> we use linux and freebsd machines as firewalls for a lot of customers 
>> and with the increasing bandwidth and pps the customers are demanding 
>> more and I
>> can't give them better performance with a brand new dual xeon or 
>> opteron machine vs the old p4 machines I have them running on now :/  
>> The only difference
>> in the new machine vs old machine is that the new one can take in 
>> more pps and drop it but it can't route a whole lot more.  
>> Routing/firewalling must still not be lock free, ugh.. :P
>>
>> Thanks
>>
>>
>>
>> Julian Elischer wrote:
>>> Paul wrote:
>>>> ULE without PREEMPTION is now yeilding better results.
>>>>         input          (em0)           output
>>>>   packets  errs      bytes    packets  errs      bytes colls
>>>>    571595 40639   34564108          1     0        226     0
>>>>    577892 48865   34941908          1     0        178     0
>>>>    545240 84744   32966404          1     0        178     0
>>>>    587661 44691   35534512          1     0        178     0
>>>>    587839 38073   35544904          1     0        178     0
>>>>    587787 43556   35540360          1     0        178     0
>>>>    540786 39492   32712746          1     0        178     0
>>>>    572071 55797   34595650          1     0        178     0
>>>>  
>>>> *OUCH, IPFW HURTS..
>>>> loading ipfw, and adding one ipfw rule allow ip from any to any 
>>>> drops 100Kpps off :/ what's up with THAT?
>>>> unloaded ipfw module and back 100kpps more again, that's not right 
>>>> with ONE rule.. :/
>>>
>>> ipfw need sto gain a lock on hte firewall before running,
>>> and is quite complex..  I can believe it..
>>>
>>> in FreeBSD 4.8 I was able to use ipfw and filter 1Gb between two 
>>> interfaces (bridged) but I think it has slowed down since then due 
>>> to the SMP locking.
>>>
>>>
>>>>
>>>> em0 taskq is still jumping cpus.. is there any way to lock it to 
>>>> one cpu or is this just a function of ULE
>>>>
>>>> running a tar czpvf all.tgz *  and seeing if pps changes..
>>>> negligible.. guess scheduler is doing it's job at least..
>>>>
>>>> Hmm. even when it's getting 50-60k errors per second on the 
>>>> interface I can still SCP a file through that interface although 
>>>> it's not fast.. 3-4MB/s..
>>>>
>>>> You know, I wouldn't care if it added 5ms latency to the packets 
>>>> when it was doing 1mpps as long as it didn't drop any.. Why can't 
>>>> it do that? Queue them up and do them in bigggg chunks so none are 
>>>> dropped........hmm?
>>>>
>>>> 32 bit system is compiling now..  won't do > 400kpps with GENERIC 
>>>> kernel, as with 64 bit did 450k with GENERIC, although that could be
>>>> the difference between opteron 270 and opteron 2212..
>>>>
>>>> Paul
>>>>
>>>> _______________________________________________
>>>> freebsd-net at freebsd.org mailing list
>>>> http://lists.freebsd.org/mailman/listinfo/freebsd-net
>>>> To unsubscribe, send any mail to "freebsd-net-unsubscribe at freebsd.org"
>>>
>>>
>
>



More information about the freebsd-net mailing list