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

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
>>

Reply via email to