From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id B1A15A00C2 for ; Fri, 24 Apr 2020 12:12:32 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 1D5051C044; Fri, 24 Apr 2020 12:12:32 +0200 (CEST) Received: from smtp-3.sys.kth.se (smtp-3.sys.kth.se [130.237.48.192]) by dpdk.org (Postfix) with ESMTP id DB0951BE80 for ; Fri, 24 Apr 2020 12:12:30 +0200 (CEST) Received: from smtp-3.sys.kth.se (localhost.localdomain [127.0.0.1]) by smtp-3.sys.kth.se (Postfix) with ESMTP id 83D93A636; Fri, 24 Apr 2020 12:12:30 +0200 (CEST) X-Virus-Scanned: by amavisd-new at kth.se Received: from smtp-3.sys.kth.se ([127.0.0.1]) by smtp-3.sys.kth.se (smtp-3.sys.kth.se [127.0.0.1]) (amavisd-new, port 10024) with LMTP id yt2ADRurWV_A; Fri, 24 Apr 2020 12:12:29 +0200 (CEST) X-KTH-Auth: barbette [2a02:a03f:4070:7c00:920:4212:f59e:c0c2] DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kth.se; s=default; t=1587723149; bh=ra0Ty2Y1Lmg5glV8g81r/Xp6zy+D0ZXxyPH5S0E1bOs=; h=From:Subject:To:Cc:References:Date:In-Reply-To; b=jbkXT+T7+oFRdL6bxNjMvNMydJB2cYJfldurZN0Euc8T580PKNoHaHjEMLRr2ubs8 hKgomhYLVTm6ynzV60qvZoe3hV4whMXeLVsp2PSR1zuA/A/QjTZisq7tY6b4RDzvrm fcprEMqq0ERodyGJSRuFVDfrzskefyuqySzRtOws= X-KTH-mail-from: barbette@kth.se Received: from [IPv6:2a02:a03f:4070:7c00:920:4212:f59e:c0c2] (unknown [IPv6:2a02:a03f:4070:7c00:920:4212:f59e:c0c2]) by smtp-3.sys.kth.se (Postfix) with ESMTPSA id 3395CA638; Fri, 24 Apr 2020 12:12:28 +0200 (CEST) From: Tom Barbette To: Raslan Darawsheh , Yan Lei , Wisam Monther , Thomas Monjalon Cc: "users@dpdk.org" References: <2cb8c79c6e0a4829996f7a3b56386e89@epfl.ch> <89cc4e44367b4da9b3be59327f178524@epfl.ch> <148d15790fe042c28bedb282aef1e068@epfl.ch> <6171086.9CP3fYhb5E@thomas> <40bae964f1874d5698a5d70cad2de4a6@epfl.ch> <50ddf9ff-654b-347c-bb76-41595ad16f9b@kth.se> Message-ID: <895c65c8-3662-f656-72df-54cbb406ef7b@kth.se> Date: Fri, 24 Apr 2020 12:12:25 +0200 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:68.0) Gecko/20100101 Thunderbird/68.7.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 8bit Subject: Re: [dpdk-users] [mlx5 + DPDK 19.11] Flow insertion rate less than 4K per sec X-BeenThere: users@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK usage discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: users-bounces@dpdk.org Sender: "users" Hi Raslan! Thanks for your concern. You have an example there: https://github.com/rsspp/fastclick/blob/bef6413c66ea13cb42bcafbe487d7a31bb0ce58a/vendor/nicscheduler/methods/rss.cc#L193 It's basically "eth ipv4" with an RSS action. The goal is to do more or less what irqbalance does with IRQs, but with RSS which allows for a much better fine-tuning of the load-balancing. That rule takes around 10ms to be installed (timing of rte_flow_create) with 512 entries, and 4ms with 128 entries. However the redirection rule we use to simply jump between tables (https://github.com/rsspp/fastclick/blob/bef6413c66ea13cb42bcafbe487d7a31bb0ce58a/vendor/nicscheduler/methods/rss.cc#L140) to approach atomicity of updates by updating different tables in alternating cycles takes 9usec, that is pretty fast. In comparison, on group 0 RETA rules take around 35ms with 512 entries, and 30ms with 128. So the improvement is not as high as with "standard" rules, sadly. That being said, RSS update on XL710 takes around 20us (the global RSS table, here I use rte_flow because MLX5 is not updateable while the device is running with DPDK, but it is with the Kernel). Tom Le 21/04/2020 à 14:30, Raslan Darawsheh a écrit : > Hi Tom, > > Can you send an example for an rte_flow rule that you are trying ? > I guess since you are using RSS it might affect more the performance what flows are being used. > > Kindest regards, > Raslan Darawsheh > >> -----Original Message----- >> From: users On Behalf Of Tom Barbette >> Sent: Tuesday, April 21, 2020 12:00 PM >> To: Yan Lei ; Wisam Monther ; >> Thomas Monjalon >> Cc: users@dpdk.org >> Subject: Re: [dpdk-users] [mlx5 + DPDK 19.11] Flow insertion rate less than >> 4K per sec >> >> Interesting! No I did not try the flow_perf, it was from our own >> application. >> >> I'm actually taking that number from the installation time of a single >> rule, that have RSS action which is probably more costly. So this and >> that may bring down the performance. >> >> Tom >> >> Le 20/04/2020 à 15:48, Yan Lei a écrit : >>> >>> Hi Tom, >>> >>> I guess "SW steering" refers to the "direct verbs/rules" >>> >> (https://eur03.safelinks.protection.outlook.com/?url=https%3A%2F%2Fmail >> s.dpdk.org%2Farchives%2Fdev%2F2019- >> February%2F125303.html&data=02%7C01%7Crasland%40mellanox.com >> %7C5a9698dca303410e1cf208d7e5d251d7%7Ca652971c7d2e4d9ba6a4d14925 >> 6f461b%7C0%7C0%7C637230563788809406&sdata=AFzmKniGXDV5yCnd >> 3qQIRQNUQ0YCxS0jXv2b2n6QW0Q%3D&reserved=0). group=0 >>> is still the same old (pre dpdk 19.05) slow implementation of flow >>> insertion. But just my guess. >>> >>> How did you measure the flow insertion rate? Did you use the patch they >>> mentioned earlier in the thread? With that patch I got 330K with >>> sudo ./flow_perf -l 3-7 -n 4 -w 02:00.0,dv_flow_en=1 -- --ingress >>> --group=1 --ether --ipv4 --udp --queue --flows-count=1000000. >>> >>> Cheers, >>> Lei >>> >>> ------------------------------------------------------------------------ >>> *From:* Tom Barbette >>> *Sent:* Monday, April 20, 2020 2:24 PM >>> *To:* Wisam Monther; Thomas Monjalon; Yan Lei >>> *Cc:* users@dpdk.org >>> *Subject:* Re: [dpdk-users] [mlx5 + DPDK 19.11] Flow insertion rate less >>> than 4K per sec >>> Hi, >>> >>> Le 19/04/2020 à 16:07, Wisam Monther a écrit : >>>> Hey Yan, >>>> >>>> For FW steering there is HW limitation on number of flows that can be >> added on it. >>>> Which is table 0, and I think it's 65536 >>>> >>>> But to get Millions of rules use --group=1 which is SW steering. >>> What do you mean by SW steering? >>> >>> Using group 1 we had better performance but only around 10K. I think the >>> whole process lacks an update feature instead of delete+create, and the >>> ability to batch rules. >>> >>>> Moreover make sure you have enough memory in the app to have good >> insertion rate. >>>> >>>> If you have enough 1G huge pages then it's ok. >>>> If you are working with 2M pages your command should be like this: >>>> >>>> sudo ./flow_perf -l 3-7 -n 4 -w 02:00.0,dv_flow_en=1 --socket-mem=4096 >> -- --ingress --group=1 --ether --ipv4 --udp --queue --flows-count=1000000 >>>> >>>> BRs, >>>> Wisam Jaddo >>>> >>>>> -----Original Message----- >>>>> From: Thomas Monjalon >>>>> Sent: Sunday, April 19, 2020 4:58 PM >>>>> To: Yan Lei >>>>> Cc: users@dpdk.org; Wisam Monther >>>>> Subject: Re: [dpdk-users] [mlx5 + DPDK 19.11] Flow insertion rate less >> than 4K >>>>> per sec >>>>> >>>>> +Cc Wisam >>>>> >>>>> 16/04/2020 17:32, Yan Lei: >>>>>> Hi Thomas, >>>>>> >>>>>> >>>>>> I tried the patch (68057 + 68058) on DPDK 19.11/20.02 + ofed 4.7.3. >>>>>> >>>>>> >>>>>> TL;DR >>>>>> >>>>>> >>>>>> 1. I was only able to generate 3K rules per second. >>>>>> >>>>>> 2. The maximum number of distinct rules the NIC can support seems to >> be >>>>> 65536. >>>>>> >>>>>> >>>>>> How can I increase the insertion rate? Any firmware/driver config I >> need to >>>>> tune? Also, is 65536 distinct flows truly a limit of the NIC? The patch >> defaults to >>>>> generate 4 million distinct flows though... >>>>>> >>>>>> >>>>>> Thanks in advance! >>>>>> >>>>>> >>>>>> >>>>>> Initially, running >>>>>> >>>>>> >>>>>> ``` >>>>>> >>>>>> sudo ./flow_perf -l 3-7 -n 4 -w 02:00.0,dv_flow_en=1 -- --ingress >>>>>> --ether --ipv4 --udp --queue --flows-count=1000000 >>>>>> >>>>>> ``` >>>>>> >>>>>> >>>>>> failed after a few seconds and it gave >>>>>> >>>>>> >>>>>> ``` >>>>>> Flow can't be created 1 message: hardware refuses to create flow >>>>>> EAL: Error - exiting with code: 1 >>>>>>     Cause: error in creating flow >>>>>> ``` >>>>>> >>>>>> >>>>>> Then I added a small debug patch (attached) and it showed that the >> error >>>>> happens when creating the 65536th flow rule. >>> >>> The first table is indeed limited to something around that number. But >>> performance are already degrading before that point. Even with OFED 5 >>> and the firmware that comes with it. >>> >>>>>> >>>>>> >>>>>> ``` >>>>>> Flow can't be created 1 message: hardware refuses to create flow >>>>>> EAL: Error - exiting with code: 1 >>>>>>     Cause: error in creating flow,flows generated: 65536 ``` >>>>>> >>>>>> >>>>>> My guess is that the NIC can only accept 65536 concurrent rules. Once I >>>>> changed the outer ip mask to 0xffff, the above command runs fine. >>>>>> >>>>>> >>>>>> To see how many rules I can generate per second. I ran (with the outer >>>>>> ip mask 0xffff) >>>>>> >>>>>> >>>>>> ``` >>>>>> >>>>>> sudo ./flow_perf -l 3-7 -n 4 -w 02:00.0,dv_flow_en=1 -- --ingress >>>>>> --ether --ipv4 --udp --queue --flows-count=65536 >>>>>> >>>>>> ``` >>>>>> >>>>>> >>>>>> and it gives >>>>>> >>>>>> >>>>>> ``` >>>>>> >>>>>> :: Total flow insertion rate -> 3.015922 K/Sec >>>>>> :: The time for creating 65536 in flows 21.730005 seconds >>>>>> :: EAGAIN counter = 0 >>>>>> ``` >>>>>> So 3 rules per sec. Which is close to what I observed before. >>>>>> >>>>>> ``` >>>>>> sudo ./flow_perf -l 3-7 -n 4 -w 02:00.0,dv_flow_en=1 -- --ingress >>>>>> --ether --ipv4 --udp --queue --flows-count=100000 ``` gives >>>>>> >>>>>> ``` >>>>>> :: Total flow insertion rate -> 0.949381 K/Sec >>>>>> :: The time for creating 100000 in flows 105.331842 seconds >>>>>> :: EAGAIN counter = 0 >>>>>> ``` >>>>>> Have no idea why it's only 1k/sec in this case... >>>>>> >>>>>> Thanks and cheers, >>>>>> Lei >>>>>> >>>>>> >>>>>> ________________________________ >>>>>> From: users on behalf of Yan Lei >>>>>> >>>>>> Sent: Tuesday, April 14, 2020 1:20 PM >>>>>> To: Thomas Monjalon >>>>>> Cc: users@dpdk.org >>>>>> Subject: Re: [dpdk-users] [mlx5 + DPDK 19.11] Flow insertion rate less >>>>>> than 4K per sec >>>>>> >>>>>> Hi Thomas, >>>>>> >>>>>> Thanks! I will give it a try (using DPDK 19.11 + ofed 4.7.3). >>>>>> >>>>>> Cheers, >>>>>> Lei >>>>>> ________________________________ >>>>>> From: Thomas Monjalon >>>>>> Sent: Tuesday, April 14, 2020 12:12:28 PM >>>>>> To: Yan Lei >>>>>> Cc: users@dpdk.org >>>>>> Subject: Re: [dpdk-users] [mlx5 + DPDK 19.11] Flow insertion rate less >>>>>> than 4K per sec >>>>>> >>>>>> Hi, >>>>>> >>>>>> 10/04/2020 20:11, Yan Lei: >>>>>>> I am doing some study that requires inserting more than 1 million >>>>>>> flow rules per second to the NIC. And I runs DPDK 19.11 on a >> ConnectX-5 >>>>> NIC. >>>>>>> >>>>>>> But I only managed to create around 3.3K rules per second. >>>>>>> Below is the code I used to measure the insertion rate: >>>>>> >>>>>> Please could you review this new application designed for such >> measure? >>>>>> >>>>>> >> https://eur03.safelinks.protection.outlook.com/?url=https%3A%2F%2Fpatc >>>>>> >>>>> >> hes.dpdk.org%2Fpatch%2F68058%2F&data=02%7C01%7Cwisamm%40m >>>>> ellanox.c >>>>>> >>>>> >> om%7Cc046523203de456919da08d7e469add0%7Ca652971c7d2e4d9ba6a4d14 >> 9 >>>>> 256f46 >>>>>> >>>>> >> 1b%7C0%7C0%7C637229014854391590&sdata=dxxEmm4DWoMPeNGy >> M >>>>> FaYgk%2BjSE >>>>>> %2FwVKLnYAwQ7QhjKGc%3D&reserved=0 >>>>>> >>>>>> Any feedback about the above patch is welcome. Feel free to try and >> review >>>>> it. >>>>> >>>>> >>>>> >>>> >>> >>> >>> Tom