Hi Ethan,

Thanks for sharing your overview on multi-threading, which is quite 
helpful for us to understand the big picture. It is fairly reasonable
 to ensure correctness first and then optimizing it.

On Wednesday, December 04, 2013 4:55 AM, Ethan Jackson wrote:
> 
> Specifically we're going to look at structural changes to
> further improve the performance and it's ability so scale to multiple
> threads.  Also we'll invest in improving the efficiency of each
> thread, possibly by implementing something like RCU. 

It is great that you are considering lock-free optimizations.
Apart of that, with regard to structural changes for salability, I would 
still prefer a structure without the centralized dispatcher. But as 
also mentioned by Alex, this is not urgent.

> 
> With regards to the fmbs.  These are a temporary solution which
> clearly aren't ideally.  I'm working on some patches which should be
> ready this week which remove them entirely, and instead handle flow
> installation from the miss handler threads directly.  Obviously, this
> is going to have a significant impact on the performance
> characteristics of the switch, so it may be worth watching out for
> these patches to be merged.

This is great!

> 
> There's a tradeoff between CPU utilization and latency.  

I cannot agree more on your view on this. And you are so right that  
my patch performs much worse under TCP_CRR test. I agree that it's not a 
problem for a dedicated TOR switch to have high CPU as long as it helps on
throughput. So our goal is to reduce the unnecessary contention which is
especially sensitive in our many core hosts as shown by profile from 
Chengyuan that ticket spinlocks introduced by futex calls occupied the
CPU.

> Also, as the
> system becomes more loaded, batching will happen naturally anyways so
> the cost of this system is relatively low when under load.
> 

I am kind of worried about this point, because in our testing we 
observed that when system is loaded even with ~90% CPU for 
dispatcher thread, it cannot handle upcalls in batch in most cases.
Here is the data collected by Chengyuan:
n_upcalls total            1076606
n_upcalls in a batch > 5:             4537
n_upcalls in a batch > 10:          825
n_upcalls in a batch > 20:           103
n_upcalls in a batch >= 50:           0

Less than 5% upcalls were handled in a batch bigger than 5, and 
the MAX_BATCH number 50 was never hit.
When we increased hping speed above this threshold batch handling
did increase a lot but fastpath already started dropping packets because 
dispatcher was now bottleneck and cannot handle fast enough:
        lookups: hit:165917 missed:8042062 lost:168576

This means batching will not happen naturally: it is either no batching,
or batching but overloaded.

Best regards,
Han
_______________________________________________
discuss mailing list
discuss@openvswitch.org
http://openvswitch.org/mailman/listinfo/discuss

Reply via email to