Hi Mattias, Please see inline.
Thanks, Anoob > -----Original Message----- > From: Mattias Rönnblom <mattias.ronnb...@ericsson.com> > Sent: Tuesday, July 2, 2019 11:08 PM > To: Anoob Joseph <ano...@marvell.com>; Thomas Monjalon > <tho...@monjalon.net>; Bruce Richardson <bruce.richard...@intel.com> > Cc: Jerin Jacob Kollanukkaran <jer...@marvell.com>; dev@dpdk.org; Nikhil Rao > <nikhil....@intel.com>; Erik Gabriel Carrillo <erik.g.carri...@intel.com>; > Abhinandan Gujjar <abhinandan.guj...@intel.com>; Pablo de Lara > <pablo.de.lara.gua...@intel.com>; Narayana Prasad Raju Athreya > <pathr...@marvell.com>; Lukas Bartosik <lbarto...@marvell.com>; Pavan > Nikhilesh Bhagavatula <pbhagavat...@marvell.com>; Hemant Agrawal > <hemant.agra...@nxp.com>; Nipun Gupta <nipun.gu...@nxp.com>; Harry van > Haaren <harry.van.haa...@intel.com>; Liang Ma <liang.j...@intel.com>; > techbo...@dpdk.org > Subject: Re: [dpdk-dev] [EXT] Re: [PATCH 00/39] adding eventmode helper > library > > On 2019-07-02 18:18, Anoob Joseph wrote: > > Hi Thomas, Bruce, > > > >> For what exactly is being proposed, is there a short version of the > >> suggested > approach and the logic behind it? > >> I think eventdev should be simple to use and could be added to any > >> example like l2fwd. The idea of forking an example, where we should > >> be able to have an unified API, is a proof of failure. > > > > As Mattias had mentioned earlier, eventdev is complicated because of a > reason. It exposes lot of configuration which can be used to dynamically load- > balance real world traffic. With various adapters like, Rx adapter, Tx > adapter, > crypto adapter etc getting implemented, applications can better utilize > capabilities of event device. But all the existing example applications in > DPDK is > designed around mbufs and polling of cores on various devices. If an > application > has to fully leverage capabilities of an event device, it has to setup all > these > adapters and devices. And, as Mattias had mentioned, this involves lot of > configuration. This configuration would be repeated for every application > which > would need to run in eventmode. Eventmode helper abstracts this. > > > > A question I asked myself when I had a look at the patch set is: does > eventmode > really abstract processing pipeline configuration, or is it merely making a > bunch > of assumptions and hard-coding a bunch of configuration parameters. > > Merely reducing flexibility doesn't qualify as abstraction, I would say. [Anoob] The idea is not to remove flexibility. All options of adapters would be exposed as command line args/ config file. For the first version, I didn't add it because it would exponentially increase the code. > > > For an existing application to be moved to eventmode, all it would take is > couple of function calls and fine-tuned worker thread. > > If you want to use eventdev as a very complex implementation of software RSS, > sure. > > If you have a problem which solution requires a multi-stage pipeline, going > from > a run-to-completion model to a scheduled pipeline is going to have a big > impact > on your code base, and eventdev configuration will be a relatively minor part > of > the work, in the typical case, I would expect. [Anoob] Why do you say this approach cannot work in multi stage environment? You need to increase the number of event ports & queues as required (using command line args). Few ports & queues would be used by Rx adapter & Tx adapter. Rest will be available for the application to do the multi-stage pipeline. Also, for some applications, this complexity is not needed. Say, for l2fwd, none of this complexity is needed. When we attempt ipsec-secgw, multi-stage might come into picture. > > > Just to remind, this is the 3rd iteration of submitting patches. The first > > set of > patches were submitted by Sunil Kori from NXP and that involved additions in > l3fwd application. It involved addition of lot of code, and Bruce wanted to > make > the additions common. Jerin suggested to add these in event dev library. > > > > The second iteration involved additions in l2fwd and introduced eventmode in > eventdev library. Then it was up for discussions again and it was decided > that for > l2fwd, a new application for eventmode would be drafted, but for l3fwd & > ipsec- > secgw, the original application would get additions. L2fwd-event will be used > to > finalize the event-mode library before extending to other applications. > > > > Now this is the third iteration. > > > > What is your point? [Anoob] We had been doing back and forth regarding approaches. If applications like l2fwd, l3fwd, ipsec-secgw etc shouldn't deal with events, it could've been decided in the first submission itself. > > >> About the helper, I see some command line processing and other things > which have nothing to do in a library. > >> Actually I fail to understand the global idea of this helper. > >> There is no description of what this helper is, and even no name for it. > > > > All the eventmode configuration need to be user defined. So either every > application would need the code duplicated (how the code for lcore-port-queue > conf required for eth devs is repeated in every app) or be kept common. Again, > that can be kept as a separate header and can be copied around. I don't see > any > issue, if you are fine with it. > > > > OK, so in real-world applications, duplicating eventdev configuration is not a > major concern. You will have very few applications, and if they have a similar > structure, you can reuse your proprietary framework. If they don't, no big > deal. > Just an additional 1% of application code to maintain. > > For the DPDK example applications, the situation is very different. Many > trivial > applications with a similar structure. I'm sure solving the framework problem > for > this subset of applications is easier, but I would expect such a library > would have > limited value outside the realm of the example directory. Although it might > make > the DPDK example code base more maintainable, my fear is that it'll just > confuse > the reader of the example applications. Now they have to understand a > framework *and* an application, and not only the example application. Add to > this that the framework you just spent time understanding will also not > provide - > at least not in its current form - a good foundation for non-trivial > applications. > > The DPDK APIs shouldn't be optimized for example applications. [Anoob] Initially the target would be only DPDK applications. As I had mentioned earlier, I'm dropping the idea of making this a library/common code. My proposal is to have all the code in l2fwd-event application itself. In that case, would you have any problem? None of the DPDK APIs would be modified in this effort. When Bruce looked at the patches I had submitted to l2fwd, his opinion was, there is lot of code to just do initialization & configuration. But here you are saying, that code is very minimal compared to the applications. These are all perspectives and I would like to get a consensus.