[ovs-discuss] How can I OVS run in multi-core?

Flavio Leitner fbl at sysclose.org
Mon Sep 4 19:52:52 UTC 2017


On Thu, 31 Aug 2017 16:04:22 +0900
Heung Sik Choi <hschoi at os.korea.ac.kr> wrote:

> Hi,
> 
> I want to measure the performance of OVS in multi core.
> 
> I have a server on two Xeon 2630 v2 (NUMA) with 4 dual port 10GbE NIC. the
> server with 12 cores and 8 physical ports run OVS. 4ports are for receiving
> 40Gbps traffic and the other 4 ports are for sending 40Gbps traffic.
> 
> I use DPDK pktgen on other machine to make intensive traffic. using this
> maching, I sent 12 type flow traffic to OVS server. At this experiment I
> expected that OVS run in using 12 cores fully. However, It didn't work .

In order to have multiple CPUs processing packets in parallel with
the kernel datapath, you need multiple queues with their interrupts
spread among all relevant CPUs.  And in order to the NIC to spread
the traffic to different queues, you need different streams (5-tuple).
That is called RSS.

For example, stream A would go to queue#1 which is mapped to CPU#1 and
stream B would go to queue#2 which is mapped to CPU#2 and so on.

That is how Linux kernel works in general (as standalone NIC, or using
Linux bridge or OVS). Here is a doc explaining it in more details:
https://www.kernel.org/doc/Documentation/networking/scaling.txt

-- 
Flavio



More information about the discuss mailing list