netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Ethernet bridge performance
@ 2003-08-07  9:12 Felix Radensky
  2003-08-07 15:59 ` Stephen Hemminger
  2003-08-07 16:57 ` Ben Greear
  0 siblings, 2 replies; 17+ messages in thread
From: Felix Radensky @ 2003-08-07  9:12 UTC (permalink / raw)
  To: netdev

[-- Attachment #1: Type: text/plain, Size: 939 bytes --]

Hi,

I'm evaluating a performance of a dual port ethernet bridge, and the
results are a bit disappointing. I would appreciate any hints on improving
the results.

I'm using a Dual Xeon 2.66 GHz box based on Intel  5701 chipset with  1G
of RAM. NICs are e1000 82546 connected to PCIX bus. Kernel is 2.4.22-pre8,
e1000  driver version 5.1.13-k1 with NAPI support. NICs' interrupts are 
bound
to CPU0.

The test consists of sending 200 byte UDP packets from 2 ports of Gigabit
IXIA traffic generator to 2 bridge ports. The bridge is capable to sustain
the rate of ~170000 pps from each IXIA port without drops. I was
expecting it to be able to do at least 250000 pps (our own bridge code 
 based
on 2.2.x kernel sustains ~266000 pps on the same hardware).
e1000 driver drops 0 packets, all drops occur at higher level.

The output of oprofile attached. I'd be happy to provide any info you may
need.

Thanks in advance for your help.

Felix.

[-- Attachment #2: oprofile.log --]
[-- Type: text/plain, Size: 5022 bytes --]

CPU: P4 / Xeon, speed 2666.83 MHz (estimated)
Counted GLOBAL_POWER_EVENTS events (time during which processor is not stopped) with a unit mask of 0x01 (count cycles when processor is active) count 1333415
vma      samples  %           symbol name
c01a13ac 7983     12.5065     eth_type_trans
c01a1590 7629     11.9519     qdisc_restart
c0197720 7365     11.5383     skb_release_data
c010c170 5962      9.3403     do_gettimeofday
c019a9b4 5207      8.1575     dev_queue_xmit
c012df98 4243      6.6472     free_block
c019ad44 3404      5.3328     netif_rx
c01974e0 3266      5.1166     alloc_skb
c012e1b4 2600      4.0733     kmalloc
c012e3b8 2448      3.8351     kfree
c019b284 2401      3.7615     process_backlog
c012debc 1941      3.0408     kmem_cache_alloc_batch
c0197790 1555      2.4361     kfree_skbmem
c01977f8 1296      2.0304     __kfree_skb
c012e07c 1203      1.8847     kmem_cache_alloc
c019afa4 1079      1.6904     net_tx_action
c019b0bc 932       1.4601     netif_receive_skb
c01a1a04 750       1.1750     pfifo_fast_dequeue
c019accc 445       0.6972     get_sample_stats
c012e338 431       0.6752     kmem_cache_free
c01a1990 222       0.3478     pfifo_fast_enqueue
c01087f0 180       0.2820     do_IRQ
c01142a8 152       0.2381     schedule
c010c434 131       0.2052     timer_interrupt
c010b04c 123       0.1927     IRQ0x31_interrupt
c010b040 115       0.1802     IRQ0x30_interrupt
c011c400 82        0.1285     cpu_raise_softirq
c019b3ac 62        0.0971     net_rx_action
c01052a0 57        0.0893     default_idle
c011be40 55        0.0862     do_softirq
c0112b28 47        0.0736     end_level_ioapic_irq
c016b210 39        0.0611     add_timer_randomness
c016afb0 38        0.0595     add_entropy_words
c016b0a4 37        0.0580     batch_entropy_store
c0105944 35        0.0548     __switch_to
c0115778 32        0.0501     wake_up_process
c0112de0 23        0.0360     do_check_pgt_cache
c010b760 22        0.0345     apic_timer_interrupt
c010ae10 21        0.0329     common_interrupt
c01da960 13        0.0204     __rdtsc_delay
c0106f3d 11        0.0172     restore_all
c0111d0c 11        0.0172     smp_apic_timer_interrupt
c01245a8 11        0.0172     check_pgt_cache
c016b158 11        0.0172     batch_entropy_process
c0107138 9         0.0141     page_fault
c0108654 9         0.0141     handle_IRQ_event
c010ae30 9         0.0141     IRQ0x00_interrupt
c0125414 9         0.0141     do_wp_page
c011f1b0 8         0.0125     update_one_process
c011f36c 8         0.0125     timer_bh
c011c33c 7         0.0110     ksoftirqd
c0113eb8 6         0.0094     reschedule_idle
c011c0cc 5         0.0078     tasklet_hi_action
c011c204 5         0.0078     bh_action
c010ae23 4         0.0063     call_do_IRQ
c011eb90 4         0.0063     add_timer
c011f284 4         0.0063     update_process_times
c0125970 4         0.0063     do_anonymous_page
c016b320 4         0.0063     add_interrupt_randomness
c0106ef4 3         0.0047     system_call
c010c78c 3         0.0047     inc_new_microsec_time
c0124850 3         0.0047     zap_page_range
c01daa70 3         0.0047     __generic_copy_to_user
c010b778 2         0.0031     call_apic_timer_interrupt
c0112ae8 2         0.0031     ack_edge_ioapic_irq
c011327c 2         0.0031     do_page_fault
c01147c8 2         0.0031     __wake_up
c011ee88 2         0.0031     tqueue_bh
c0124698 2         0.0031     copy_page_range
c0125a5c 2         0.0031     do_no_page
c01282d8 2         0.0031     __find_get_page
c0128e1c 2         0.0031     file_read_actor
c01d1880 2         0.0031     fn_hash_lookup
c01db1b0 2         0.0031     number
c01052f4 1         0.0016     cpu_idle
c0106628 1         0.0016     setup_frame
c0106fb0 1         0.0016     ret_from_intr
c0106fb7 1         0.0016     ret_from_exception
c0106fe4 1         0.0016     error_code
c01114f8 1         0.0016     flush_tlb_page
c01198ec 1         0.0016     get_module_list
c0119d30 1         0.0016     s_show
c011c2d0 1         0.0016     __run_task_queue
c011f73c 1         0.0016     do_timer
c012093c 1         0.0016     sys_rt_sigprocmask
c0125bf8 1         0.0016     handle_mm_fault
c0125cc8 1         0.0016     pte_alloc
c0125fd8 1         0.0016     lock_vma_mappings
c0126348 1         0.0016     do_mmap_pgoff
c012ca90 1         0.0016     vmfree_area_pages
c012dcac 1         0.0016     kmem_cache_grow
c012f000 1         0.0016     __lru_cache_del
c0130288 1         0.0016     rmqueue
c01308a8 1         0.0016     __free_pages
c0130acf 1         0.0016     .text.lock.page_alloc
c0134460 1         0.0016     fd_install
c013fb70 1         0.0016     link_path_walk
c01557f8 1         0.0016     proc_pid_statm
c016b078 1         0.0016     credit_entropy_store
c01804dc 1         0.0016     ide_inb
c0180524 1         0.0016     ide_outb
c0180a60 1         0.0016     drive_is_ready
c0198d3c 1         0.0016     skb_headerinit
c01a58e4 1         0.0016     ip_route_input_slow
c01a8324 1         0.0016     ip_rcv
c01d0c68 1         0.0016     fib_semantic_match

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: Ethernet bridge performance
  2003-08-07  9:12 Ethernet bridge performance Felix Radensky
@ 2003-08-07 15:59 ` Stephen Hemminger
  2003-08-07 16:05   ` Felix Radensky
  2003-08-07 16:57 ` Ben Greear
  1 sibling, 1 reply; 17+ messages in thread
From: Stephen Hemminger @ 2003-08-07 15:59 UTC (permalink / raw)
  To: Felix Radensky; +Cc: netdev

What kernel version?  2.6 should be faster.

On Thu, 07 Aug 2003 12:12:07 +0300
Felix Radensky <felix@allot.com> wrote:

> Hi,
> 
> I'm evaluating a performance of a dual port ethernet bridge, and the
> results are a bit disappointing. I would appreciate any hints on improving
> the results.
> 
> I'm using a Dual Xeon 2.66 GHz box based on Intel  5701 chipset with  1G
> of RAM. NICs are e1000 82546 connected to PCIX bus. Kernel is 2.4.22-pre8,
> e1000  driver version 5.1.13-k1 with NAPI support. NICs' interrupts are 
> bound
> to CPU0.
> 
> The test consists of sending 200 byte UDP packets from 2 ports of Gigabit
> IXIA traffic generator to 2 bridge ports. The bridge is capable to sustain
> the rate of ~170000 pps from each IXIA port without drops. I was
> expecting it to be able to do at least 250000 pps (our own bridge code 
>  based
> on 2.2.x kernel sustains ~266000 pps on the same hardware).
> e1000 driver drops 0 packets, all drops occur at higher level.
> 
> The output of oprofile attached. I'd be happy to provide any info you may
> need.
> 
> Thanks in advance for your help.
> 
> Felix.
> 

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: Ethernet bridge performance
  2003-08-07 15:59 ` Stephen Hemminger
@ 2003-08-07 16:05   ` Felix Radensky
  0 siblings, 0 replies; 17+ messages in thread
From: Felix Radensky @ 2003-08-07 16:05 UTC (permalink / raw)
  To: Stephen Hemminger; +Cc: netdev

[-- Attachment #1: Type: text/plain, Size: 1259 bytes --]

It's 2.4.22-pre8. I have to work with 2.4, 2.6 is not an option
at this point.

Felix.

Stephen Hemminger wrote:

>What kernel version?  2.6 should be faster.
>
>On Thu, 07 Aug 2003 12:12:07 +0300
>Felix Radensky <felix@allot.com> wrote:
>
>  
>
>>Hi,
>>
>>I'm evaluating a performance of a dual port ethernet bridge, and the
>>results are a bit disappointing. I would appreciate any hints on improving
>>the results.
>>
>>I'm using a Dual Xeon 2.66 GHz box based on Intel  5701 chipset with  1G
>>of RAM. NICs are e1000 82546 connected to PCIX bus. Kernel is 2.4.22-pre8,
>>e1000  driver version 5.1.13-k1 with NAPI support. NICs' interrupts are 
>>bound
>>to CPU0.
>>
>>The test consists of sending 200 byte UDP packets from 2 ports of Gigabit
>>IXIA traffic generator to 2 bridge ports. The bridge is capable to sustain
>>the rate of ~170000 pps from each IXIA port without drops. I was
>>expecting it to be able to do at least 250000 pps (our own bridge code 
>> based
>>on 2.2.x kernel sustains ~266000 pps on the same hardware).
>>e1000 driver drops 0 packets, all drops occur at higher level.
>>
>>The output of oprofile attached. I'd be happy to provide any info you may
>>need.
>>
>>Thanks in advance for your help.
>>
>>Felix.
>>
>>    
>>
>
>  
>


[-- Attachment #2: Type: text/html, Size: 1624 bytes --]

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: Ethernet bridge performance
  2003-08-07  9:12 Ethernet bridge performance Felix Radensky
  2003-08-07 15:59 ` Stephen Hemminger
@ 2003-08-07 16:57 ` Ben Greear
  2003-08-07 17:19   ` Felix Radensky
  2003-08-07 19:35   ` David S. Miller
  1 sibling, 2 replies; 17+ messages in thread
From: Ben Greear @ 2003-08-07 16:57 UTC (permalink / raw)
  To: Felix Radensky; +Cc: netdev

Felix Radensky wrote:
> Hi,
> 
> I'm evaluating a performance of a dual port ethernet bridge, and the
> results are a bit disappointing. I would appreciate any hints on improving
> the results.

> c01a13ac 7983     12.5065     eth_type_trans
> c01a1590 7629     11.9519     qdisc_restart
> c0197720 7365     11.5383     skb_release_data
> c010c170 5962      9.3403     do_gettimeofday

If that do_gettimeofday is happening in the skb rx code, then
you could gain ~10% by disabling it somehow..as it should not
matter for a bridge.  I bet Robert's skb-recycle patch would
help here too, especially if you allowed the NICs to save up a large
number of skbs so that alloc was less likely to fail.

Btw, I've considered saving, say, 10k skbs on a list in my module,
allocated by GFP_KERNEL at module load time, and using them when
GFP_ATOMIC skb_alloc fails in the IRQ handling portion of the code....

Anyone think that's a good idea? :)

Ben

-- 
Ben Greear <greearb@candelatech.com>
Candela Technologies Inc  http://www.candelatech.com

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: Ethernet bridge performance
  2003-08-07 16:57 ` Ben Greear
@ 2003-08-07 17:19   ` Felix Radensky
  2003-08-07 19:09     ` Robert Olsson
  2003-08-07 19:35   ` David S. Miller
  1 sibling, 1 reply; 17+ messages in thread
From: Felix Radensky @ 2003-08-07 17:19 UTC (permalink / raw)
  To: Ben Greear; +Cc: netdev

Thanks for your help, Ben. What is skb-recycle patch
and where can I find it ?

Felix.

Ben Greear wrote:

> Felix Radensky wrote:
>
>> Hi,
>>
>> I'm evaluating a performance of a dual port ethernet bridge, and the
>> results are a bit disappointing. I would appreciate any hints on 
>> improving
>> the results.
>
>
>> c01a13ac 7983     12.5065     eth_type_trans
>> c01a1590 7629     11.9519     qdisc_restart
>> c0197720 7365     11.5383     skb_release_data
>> c010c170 5962      9.3403     do_gettimeofday
>
>
> If that do_gettimeofday is happening in the skb rx code, then
> you could gain ~10% by disabling it somehow..as it should not
> matter for a bridge.  I bet Robert's skb-recycle patch would
> help here too, especially if you allowed the NICs to save up a large
> number of skbs so that alloc was less likely to fail.
>
> Btw, I've considered saving, say, 10k skbs on a list in my module,
> allocated by GFP_KERNEL at module load time, and using them when
> GFP_ATOMIC skb_alloc fails in the IRQ handling portion of the code....
>
> Anyone think that's a good idea? :)
>
> Ben
>

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: Ethernet bridge performance
  2003-08-07 17:19   ` Felix Radensky
@ 2003-08-07 19:09     ` Robert Olsson
  2003-08-07 19:21       ` jamal
       [not found]       ` <3F3601F3.6000001@allot.com>
  0 siblings, 2 replies; 17+ messages in thread
From: Robert Olsson @ 2003-08-07 19:09 UTC (permalink / raw)
  To: Felix Radensky; +Cc: Ben Greear, netdev


Felix Radensky writes:
 > Thanks for your help, Ben. What is skb-recycle patch
 > and where can I find it ?
 
 It's experimental and not updated for almost a year and current 
 implementation does not add anything to SMP. Got some idea how
 to improve this... but try to keep to slab as long as possible 
 it has been improved.

 Routing/bridging on SMP has affinty problem. If you are passing
 skb's say from eth0 to eth1 and they are bound on different CPU's
 you get cache boucing since the TX-interrupts come on another CPU.

 In a recent test with pktgen:
 300 kpps with TX interrupts on same CPU as sender.
 198 kpps with TX intr on different CPU as sender.

 Recycling tries to address this but current implementation fails
 as said.

 But you are probably hit by something else... Check were the drops 
 happens qdisc?. NIC ring RX/TX size, Number of interrupts. ksoftird 
 priority, link HW_FLOW control, checksumming, affinity etc. 

 
 Cheers.
						--ro

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: Ethernet bridge performance
  2003-08-07 19:09     ` Robert Olsson
@ 2003-08-07 19:21       ` jamal
  2003-08-07 22:49         ` Robert Olsson
  2003-08-10  7:32         ` Felix Radensky
       [not found]       ` <3F3601F3.6000001@allot.com>
  1 sibling, 2 replies; 17+ messages in thread
From: jamal @ 2003-08-07 19:21 UTC (permalink / raw)
  To: Robert Olsson; +Cc: Felix Radensky, Ben Greear, netdev

Actually seems his biggest problem is he is not running
the NAPI driver

cheers,
jamal

On Thu, 2003-08-07 at 15:09, Robert Olsson wrote:
> Felix Radensky writes:
>  > Thanks for your help, Ben. What is skb-recycle patch
>  > and where can I find it ?
>  
>  It's experimental and not updated for almost a year and current 
>  implementation does not add anything to SMP. Got some idea how
>  to improve this... but try to keep to slab as long as possible 
>  it has been improved.
> 
>  Routing/bridging on SMP has affinty problem. If you are passing
>  skb's say from eth0 to eth1 and they are bound on different CPU's
>  you get cache boucing since the TX-interrupts come on another CPU.
> 
>  In a recent test with pktgen:
>  300 kpps with TX interrupts on same CPU as sender.
>  198 kpps with TX intr on different CPU as sender.
> 
>  Recycling tries to address this but current implementation fails
>  as said.
> 
>  But you are probably hit by something else... Check were the drops 
>  happens qdisc?. NIC ring RX/TX size, Number of interrupts. ksoftird 
>  priority, link HW_FLOW control, checksumming, affinity etc. 
> 
>  
>  Cheers.
> 						--ro
> 
> 

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: Ethernet bridge performance
  2003-08-07 16:57 ` Ben Greear
  2003-08-07 17:19   ` Felix Radensky
@ 2003-08-07 19:35   ` David S. Miller
  2003-08-07 19:50     ` Ben Greear
  1 sibling, 1 reply; 17+ messages in thread
From: David S. Miller @ 2003-08-07 19:35 UTC (permalink / raw)
  To: Ben Greear; +Cc: felix, netdev

On Thu, 07 Aug 2003 09:57:14 -0700
Ben Greear <greearb@candelatech.com> wrote:

> Btw, I've considered saving, say, 10k skbs on a list in my module,
> allocated by GFP_KERNEL at module load time, and using them when
> GFP_ATOMIC skb_alloc fails in the IRQ handling portion of the code....
> 
> Anyone think that's a good idea? :)

Not really.

GFP_ATOMIC should not fail regularly under normal (even heavy load)
operation.  If it does, it means the amount of reserved pages
the kernel keeps around is not set correctly for your system.

In 2.6.x, play with /proc/sys/vm/min_free_kbytes

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: Ethernet bridge performance
  2003-08-07 19:35   ` David S. Miller
@ 2003-08-07 19:50     ` Ben Greear
  2003-08-07 19:58       ` David S. Miller
  0 siblings, 1 reply; 17+ messages in thread
From: Ben Greear @ 2003-08-07 19:50 UTC (permalink / raw)
  To: David S. Miller; +Cc: felix, netdev

David S. Miller wrote:
> On Thu, 07 Aug 2003 09:57:14 -0700
> Ben Greear <greearb@candelatech.com> wrote:
> 
> 
>>Btw, I've considered saving, say, 10k skbs on a list in my module,
>>allocated by GFP_KERNEL at module load time, and using them when
>>GFP_ATOMIC skb_alloc fails in the IRQ handling portion of the code....
>>
>>Anyone think that's a good idea? :)
> 
> 
> Not really.
> 
> GFP_ATOMIC should not fail regularly under normal (even heavy load)
> operation.  If it does, it means the amount of reserved pages
> the kernel keeps around is not set correctly for your system.
> 
> In 2.6.x, play with /proc/sys/vm/min_free_kbytes

Anything to set for 2.4?  I've looked for how to tune the 2.4 VM for
some time, but never found anything.

Ben


-- 
Ben Greear <greearb@candelatech.com>
Candela Technologies Inc  http://www.candelatech.com

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: Ethernet bridge performance
  2003-08-07 19:50     ` Ben Greear
@ 2003-08-07 19:58       ` David S. Miller
  0 siblings, 0 replies; 17+ messages in thread
From: David S. Miller @ 2003-08-07 19:58 UTC (permalink / raw)
  To: Ben Greear; +Cc: felix, netdev

On Thu, 07 Aug 2003 12:50:53 -0700
Ben Greear <greearb@candelatech.com> wrote:

> David S. Miller wrote:
> > In 2.6.x, play with /proc/sys/vm/min_free_kbytes
> 
> Anything to set for 2.4?  I've looked for how to tune the 2.4 VM for
> some time, but never found anything.

Good question.  Nothing exists there.

The per-zone ->pages_min value is what is controlled by this
settting.  It should be easy to backport the 2.6.x sysctl to
2.4.x, even for an amateur :-)

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: Ethernet bridge performance
  2003-08-07 19:21       ` jamal
@ 2003-08-07 22:49         ` Robert Olsson
  2003-08-10  7:32         ` Felix Radensky
  1 sibling, 0 replies; 17+ messages in thread
From: Robert Olsson @ 2003-08-07 22:49 UTC (permalink / raw)
  To: hadi; +Cc: Robert Olsson, Felix Radensky, Ben Greear, netdev


jamal writes:
 > Actually seems his biggest problem is he is not running
 > the NAPI driver

 Oh! I missed this.

 Cheers.
						--ro

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: Ethernet bridge performance
  2003-08-07 19:21       ` jamal
  2003-08-07 22:49         ` Robert Olsson
@ 2003-08-10  7:32         ` Felix Radensky
  2003-08-11  2:55           ` jamal
  1 sibling, 1 reply; 17+ messages in thread
From: Felix Radensky @ 2003-08-10  7:32 UTC (permalink / raw)
  To: hadi; +Cc: Robert Olsson, Ben Greear, netdev

[-- Attachment #1: Type: text/plain, Size: 1427 bytes --]

Hi, Jamal

I guess you were not reading my first posting
very carefully :)

2.4.22 has NAPI capable e1000 driver and I've
compiled the driver with NAPI support.

So running non-NAPI driver is not my problem.

Felix.

jamal wrote:

>Actually seems his biggest problem is he is not running
>the NAPI driver
>
>cheers,
>jamal
>
>On Thu, 2003-08-07 at 15:09, Robert Olsson wrote:
>  
>
>>Felix Radensky writes:
>> > Thanks for your help, Ben. What is skb-recycle patch
>> > and where can I find it ?
>> 
>> It's experimental and not updated for almost a year and current 
>> implementation does not add anything to SMP. Got some idea how
>> to improve this... but try to keep to slab as long as possible 
>> it has been improved.
>>
>> Routing/bridging on SMP has affinty problem. If you are passing
>> skb's say from eth0 to eth1 and they are bound on different CPU's
>> you get cache boucing since the TX-interrupts come on another CPU.
>>
>> In a recent test with pktgen:
>> 300 kpps with TX interrupts on same CPU as sender.
>> 198 kpps with TX intr on different CPU as sender.
>>
>> Recycling tries to address this but current implementation fails
>> as said.
>>
>> But you are probably hit by something else... Check were the drops 
>> happens qdisc?. NIC ring RX/TX size, Number of interrupts. ksoftird 
>> priority, link HW_FLOW control, checksumming, affinity etc. 
>>
>> 
>> Cheers.
>>						--ro
>>
>>
>>    
>>
>
>  
>


[-- Attachment #2: Type: text/html, Size: 1747 bytes --]

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: Ethernet bridge performance
       [not found]       ` <3F3601F3.6000001@allot.com>
@ 2003-08-10 18:13         ` Ben Greear
  2003-08-10 19:47           ` Andi Kleen
  2003-08-10 21:49         ` Robert Olsson
  1 sibling, 1 reply; 17+ messages in thread
From: Ben Greear @ 2003-08-10 18:13 UTC (permalink / raw)
  To: Felix Radensky; +Cc: Robert Olsson, netdev, Feldman, Scott

Felix Radensky wrote:

> I've mentioned in my first post that there are zero drops at driver level
> (as shown by ifconfig). I'm also using IRQ affinity feature, binding 
> interrupts
> of eth0 and eth1 to CPU0, so I guess NIC ring RX/TX size, link HW_FLOW 
> control
> and affinity are not my problems.

Maybe try un-binding the cpus, or binding them to different procs?

> 
> Speaking of checksumming. This can be a problem indeed. ethtool -S shows 
> a lot
> of rx_csum_offload errors. Scott, what could possibly be a problem ? The 
> NIC
> is dual port 82546, driver is 5.1.13-k1.

Why would a bridge be checksumming anything?

> 
> I've failed to find a discussion about ksoftird priority. Can someone 
> please
> provide a link.

I've increased my performance by setting softirqd priority to -18,
but since you seem to be dropping someplace other than the driver,
I'm not sure that will help.

> 
> Thanks a lot.
> 
> Felix.
> 


-- 
Ben Greear <greearb@candelatech.com>
Candela Technologies Inc  http://www.candelatech.com

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: Ethernet bridge performance
  2003-08-10 18:13         ` Ben Greear
@ 2003-08-10 19:47           ` Andi Kleen
  0 siblings, 0 replies; 17+ messages in thread
From: Andi Kleen @ 2003-08-10 19:47 UTC (permalink / raw)
  To: Ben Greear; +Cc: Felix Radensky, Robert Olsson, netdev, Feldman, Scott

> >Speaking of checksumming. This can be a problem indeed. ethtool -S shows 
> >a lot
> >of rx_csum_offload errors. Scott, what could possibly be a problem ? The 
> >NIC
> >is dual port 82546, driver is 5.1.13-k1.
> 
> Why would a bridge be checksumming anything?

A NIC normally checksums every incoming packet when hardware checksumming
is enabled.  But of course the bridge doesn't use that information.

-Andi

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: Ethernet bridge performance
       [not found]       ` <3F3601F3.6000001@allot.com>
  2003-08-10 18:13         ` Ben Greear
@ 2003-08-10 21:49         ` Robert Olsson
  1 sibling, 0 replies; 17+ messages in thread
From: Robert Olsson @ 2003-08-10 21:49 UTC (permalink / raw)
  To: Felix Radensky; +Cc: Robert Olsson, Ben Greear, netdev, Feldman, Scott


Felix Radensky writes:

 > Is slab good enough in 2.4 ? I was thinking that one of the goals
 > of skb-recycle patch was to avoid skb allocations and deallocations
 > which consume quite a lot of CPU time (as profile shows). Are you
 > saying that your patch is not hepling to reduce CPU load ?
 
 Try to understand why/where packets get dropped in your setup to start with.
 Bridging shouldn't be different from routing which I experiments with.

 Check /proc/interrupts, /proc/net/softnet_stat and check for drops at 
 qdisc ( "tc -s qdisc" you might have to readd the qdisc just get the stats)

 Possible your TX-side cannot keep up with RX. Often the TX ring is not
 cleard aggressivly enough at high rates due intr. mitigation etc or possibly
 HW_FLOWCTRL from sink device. Disable it in your for testing.

 When you cure the cause in-kernel-drop you should have packets drops
 on the DMA-ring (in the driver) with NAPI drivers and no unnecssary
 skb allocation/CPU use or DMA's.

 > echo 1 > /proc/irq/48/smp_affinity
 > to avoid this kind of problem, or something else is required ?

 If you have both both incoming and outgoing on same CPU there will
 be no cache bouncing of course and a UP kernel would be faster if this
 all your job.

 
 Cheers.
						--ro

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: Ethernet bridge performance
  2003-08-10  7:32         ` Felix Radensky
@ 2003-08-11  2:55           ` jamal
  2003-08-11  7:52             ` Robert Olsson
  0 siblings, 1 reply; 17+ messages in thread
From: jamal @ 2003-08-11  2:55 UTC (permalink / raw)
  To: Felix Radensky; +Cc: Robert Olsson, Ben Greear, netdev


Felix,

Actually i based my comments on the profiles you posted ;->
Are you running any other nics? If not that profile does look strange.

cheers,
jamal

On Sun, 2003-08-10 at 03:32, Felix Radensky wrote:
> Hi, Jamal
> 
> I guess you were not reading my first posting 
> very carefully :)
> 
> 2.4.22 has NAPI capable e1000 driver and I've
> compiled the driver with NAPI support. 
> 
> So running non-NAPI driver is not my problem.
> 
> Felix.
> 
> jamal wrote:
> > Actually seems his biggest problem is he is not running
> > the NAPI driver
> > 
> > cheers,
> > jamal
> > 
> > On Thu, 2003-08-07 at 15:09, Robert Olsson wrote:
> >   
> > > Felix Radensky writes:
> > >  > Thanks for your help, Ben. What is skb-recycle patch
> > >  > and where can I find it ?
> > >  
> > >  It's experimental and not updated for almost a year and current 
> > >  implementation does not add anything to SMP. Got some idea how
> > >  to improve this... but try to keep to slab as long as possible 
> > >  it has been improved.
> > > 
> > >  Routing/bridging on SMP has affinty problem. If you are passing
> > >  skb's say from eth0 to eth1 and they are bound on different CPU's
> > >  you get cache boucing since the TX-interrupts come on another CPU.
> > > 
> > >  In a recent test with pktgen:
> > >  300 kpps with TX interrupts on same CPU as sender.
> > >  198 kpps with TX intr on different CPU as sender.
> > > 
> > >  Recycling tries to address this but current implementation fails
> > >  as said.
> > > 
> > >  But you are probably hit by something else... Check were the drops 
> > >  happens qdisc?. NIC ring RX/TX size, Number of interrupts. ksoftird 
> > >  priority, link HW_FLOW control, checksumming, affinity etc. 
> > > 
> > >  
> > >  Cheers.
> > > 						--ro
> > > 
> > > 
> > >     
> > 
> >   
> 

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: Ethernet bridge performance
  2003-08-11  2:55           ` jamal
@ 2003-08-11  7:52             ` Robert Olsson
  0 siblings, 0 replies; 17+ messages in thread
From: Robert Olsson @ 2003-08-11  7:52 UTC (permalink / raw)
  To: hadi; +Cc: Felix Radensky, Robert Olsson, Ben Greear, netdev


jamal writes:
 > 
 > Felix,
 > 
 > Actually i based my comments on the profiles you posted ;->
 > Are you running any other nics? If not that profile does look strange.


 Yes netif_rx the non-NAPI entrance to the upper layers is in the profiles.

 c019ad44 3404      5.3328     netif_rx


 Cheers.
						--ro

^ permalink raw reply	[flat|nested] 17+ messages in thread

end of thread, other threads:[~2003-08-11  7:52 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2003-08-07  9:12 Ethernet bridge performance Felix Radensky
2003-08-07 15:59 ` Stephen Hemminger
2003-08-07 16:05   ` Felix Radensky
2003-08-07 16:57 ` Ben Greear
2003-08-07 17:19   ` Felix Radensky
2003-08-07 19:09     ` Robert Olsson
2003-08-07 19:21       ` jamal
2003-08-07 22:49         ` Robert Olsson
2003-08-10  7:32         ` Felix Radensky
2003-08-11  2:55           ` jamal
2003-08-11  7:52             ` Robert Olsson
     [not found]       ` <3F3601F3.6000001@allot.com>
2003-08-10 18:13         ` Ben Greear
2003-08-10 19:47           ` Andi Kleen
2003-08-10 21:49         ` Robert Olsson
2003-08-07 19:35   ` David S. Miller
2003-08-07 19:50     ` Ben Greear
2003-08-07 19:58       ` David S. Miller

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).