On Mon, Sep 11, 2017 at 12:22 PM, Honnappa Nagarahalli <honnappa.nagaraha...@linaro.org> wrote: > We can come up with use cases. My question is what do we expect to get > deployed? What is required for quick development might be different > from what is required for deployment. > > With NICs supporting multiple queues, will we have a case of lesser > pkt ins than the number of cores?
Hopefully not as the number of cores needed to achieve line rate should be fairly low. Once you're at line rate on a pktio, you're done. Use another pktio if you want to do more. > > Thanks, > Honnappa > > > On 11 September 2017 at 04:55, Maxim Uvarov <maxim.uva...@linaro.org> wrote: >> On 11 September 2017 at 12:11, Bogdan Pricope <bogdan.pric...@linaro.org> >> wrote: >> >>> Hi, >>> >>> There is the case where a a pktio has less pktins than available >>> cores. It is a valid case? We want to support it? >>> For example: 4 pktins and 8 cores... or default (socket) pktio with >>> one pktin/one pktout? >>> >>> Best regards, >>> Bogdan >>> >> >> I think - yes, there should not be limitation. >> >> Maxim. >> >> >>> >>> On 11 September 2017 at 11:33, Maxim Uvarov <maxim.uva...@linaro.org> >>> wrote: >>> > On 11 September 2017 at 06:26, Brian Brooks <brian.bro...@linaro.org> >>> wrote: >>> > >>> >> Honnappa, >>> >> >>> >> Could your proposal be simplified to: MT-safe pktio should be >>> >> deprecated because it is not a common use case. Applications will >>> >> either use MT-unsafe pktio or the MT-safe scheduler. >>> >> >>> >> > 1) Polling method - in which one pkt I/O will be created for each >>> >> receive worker thread. In this case, support for ODP_PKTIO_OP_MT_SAFE is >>> >> not required. >>> >> >>> > >>> > >>> > That is not always a case. One pktio can be used in several working >>> > threads. For that case safe is needed. >>> > >>> > All modes are: >>> > /** >>> > * Packet input mode >>> > */ >>> > typedef enum odp_pktin_mode_t { >>> > /** Direct packet input from the interface */ >>> > ODP_PKTIN_MODE_DIRECT = 0, >>> > /** Packet input through scheduler and scheduled event queues */ >>> > ODP_PKTIN_MODE_SCHED, >>> > /** Packet input through plain event queues */ >>> > ODP_PKTIN_MODE_QUEUE, >>> > /** Application will never receive from this interface */ >>> > ODP_PKTIN_MODE_DISABLED >>> > } odp_pktin_mode_t; >>> > >>> > /** >>> > * Packet output mode >>> > */ >>> > typedef enum odp_pktout_mode_t { >>> > /** Direct packet output on the interface */ >>> > ODP_PKTOUT_MODE_DIRECT = 0, >>> > /** Packet output through event queues */ >>> > ODP_PKTOUT_MODE_QUEUE, >>> > /** Packet output through traffic manager API */ >>> > ODP_PKTOUT_MODE_TM, >>> > /** Application will never send to this interface */ >>> > ODP_PKTOUT_MODE_DISABLED >>> > } odp_pktout_mode_t; >>> > >>> > >>> > For DIRECT, QUEUE and TM implementation can have different optimization >>> > regrades is the same pktio or in/out queue connected to that pktio used >>> in >>> > single thread or shared between threads. Application can not provide >>> > synchronization in that case because locking should be done on low level >>> > for some short period of time. Locking ODP calls will significantly slow >>> > down data path functions. >>> > >>> > Best regards, >>> > Maxim. >>> > >>> > >>> > >>> > >>> >> >>> >> Absence of MT-safe does not require 1:1 mapping of thread to pktio. It >>> >> just means that it is the application's responsibility to ensure >>> >> exclusive access to a pktio. >>> >> >>> >> > for high throughput packet I/Os [..] we do not need to support >>> >> ODP_PKTIO_OP_MT_SAFE >>> >> > We could keep the support for ODP_PKTIO_OP_MT_SAFE for other pkt I/Os. >>> >> >>> >> This would introduce an undesirable leaky abstraction. >>> >> >>> >> BB >>> >> >>> >> On Sun, Sep 10, 2017 at 12:40 PM, Bill Fischofer >>> >> <bill.fischo...@linaro.org> wrote: >>> >> > We can discuss this during tomorrow's ARCH call, and probably further >>> >> > at Connect. MT Safe is the default behavior and it's opposite ("MT >>> >> > Unsafe") was added as a potential optimization when applications >>> >> > assure implementations that only a single thread will be polling a >>> >> > PktIn queue or adding to a Pktout queue. >>> >> > >>> >> > Ideally, we'd like to retire all application I/O polling and use the >>> >> > scheduler exclusively, but that's that's a longer-term goal. For now >>> >> > we have both. >>> >> > >>> >> > On Sun, Sep 10, 2017 at 8:11 AM, Honnappa Nagarahalli >>> >> > <honnappa.nagaraha...@linaro.org> wrote: >>> >> >> Hi, >>> >> >> I think there are 2 ways in which pkt I/O will be used: >>> >> >> >>> >> >> 1) Polling method - in which one pkt I/O will be created for each >>> >> >> receive worker thread. In this case, support for ODP_PKTIO_OP_MT_SAFE >>> >> >> is not required. >>> >> >> 2) Event method - the scheduler is used to receive packets. In this >>> >> >> case the scheduler will provide the exclusive access to a pkt I/O. >>> >> >> Again in this case support for ODP_PKTIO_OP_MT_SAFE is not required. >>> >> >> >>> >> >> I am thinking, for high throughput packet I/Os such as dpdk or ODP >>> >> >> native drivers (in the future), we do not need to support >>> >> >> ODP_PKTIO_OP_MT_SAFE. The odp_pktio_open API call can return an error >>> >> >> if ODP_PKTIO_OP_MT_SAFE is asked for. >>> >> >> >>> >> >> We could keep the support for ODP_PKTIO_OP_MT_SAFE for other pkt >>> I/Os. >>> >> >> >>> >> >> This will save space in cache for the locks as well as instruction >>> >> cycles. >>> >> >> >>> >> >> Thank you, >>> >> >> Honnappa >>> >> >>>