Re: netisr software flowid

2010-09-27 Thread Artemiev Igor
On Mon, Sep 27, 2010 at 09:52:21AM +0100, Robert Watson wrote:
> One reason I haven't merged the earlier patch is that many high-performance 
> 10gbps (and even 1gbps) cards now support multiple input queues in hardware, 
> meaning that they have already done the work distribution by the time the 
> packets get to the OS.  This makes the work distribution choice quite a bit 
> harder: has a packet already been adequately balanced, or is further 
> rebalancing required -- and of so, an equal distribution as selected in that 
> patch might not generate well-balanced CPU load.
> 
> Using just the RSS hash to distribute work, and single-queue input, I am able 
> to get doubled end-host TCP performance with highly concurrent connections at 
> 10gbps, which is a useful result.  I have high on my todo list to get the 
> patch you referenced into the mix as well and see how much the software 
> distrbiution hurts/helps...
Thanks for explanation.

> Since you've done some measurement, what was the throughput on that system 
> without the patch applied, and how many cores?
The server has four cores. Topology:

 
  0, 1, 2, 3
  
   
0, 1, 2, 3
   
  
 


Without patch i have only one netisr thread
utilization with 100% cpu load and ~90% packets drop at max 80-90Kpps. The
throughput oscillated from 2MB/s to 30MB/s.

Cores 0,2,3 - netisr with cpu binding
Core 1 - irq256 (bge0) bind via cpuset(1) 

P.S.: bge(4) patched for agressive interrupt moderation. Without this i have
11K+ int/sec and ~99% cpu usage only in the interrupt handling.
___
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to "freebsd-current-unsubscr...@freebsd.org"


netisr software flowid

2010-09-26 Thread Artemiev Igor

Hi.

What is the status for software flowid calculation? I found the old netisr2
patch[1] from Robert Watson and took from there code for setting flowid in
tcp_input with some changes[2]. It work for me very well (8.1-stable) - now the
server can handle not transit traffic without drops up to 118Kpps 60MB/s
incoming and up to 107Kpps 50MB/s outgoing, netisr dispatch packets via three
threads by round-robin:

 12 root -44- 0K   336K CPU22  18:43 56.15% {swi1: netisr 2}
 12 root -44- 0K   336K RUN 3  18:41 54.49% {swi1: netisr 3}
 12 root -44- 0K   336K CPU00  18:39 50.39% {swi1: netisr 0}
 12 root -68- 0K   336K WAIT1   8:01 18.07% {irq256: bge0}

So, what the reason to exclude this code from final version?  

[1] http://www.watson.org/~robert/freebsd/netperf/20090523-netisr2.diff
[2] http://gate.kliksys.ru/~ai/software_flowid.diff 
___
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to "freebsd-current-unsubscr...@freebsd.org"