[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <46b0b7e1-c13f-a09f-36e4-036d6040f730@ti.com>
Date: Mon, 13 May 2019 15:40:58 -0400
From: Murali Karicheri <m-karicheri2@...com>
To: Vinicius Costa Gomes <vinicius.gomes@...el.com>,
<netdev@...r.kernel.org>
CC: <jhs@...atatu.com>, <xiyou.wangcong@...il.com>, <jiri@...nulli.us>,
<olteanv@...il.com>, <timo.koskiahde@...ech.com>
Subject: Re: [RFC net-next v1 0/6] RFC: taprio change schedules + offload
Hi Vinicius,
On 04/09/2019 08:32 PM, Vinicius Costa Gomes wrote:
> Hi,
>
>
> Overview
> --------
>
> This RFC has two objectives, it adds support for changing the running
> schedules during "runtime", explained in more detail later, and
> proposes an interface between taprio and the drivers for hardware
> offloading.
>
> These two different features are presented together so it's clear what
> the "final state" would look like. But after the RFC stage, they can
> be proposed (and reviewed) separately.
>
> Changing the schedules without disrupting traffic is important for
> handling dynamic use cases, for example, when streams are
> added/removed and when the network configuration changes.
>
> Hardware offloading support allows schedules to be more precise and
> have lower resource usage.
>
>
> Changing schedules
> ------------------
>
> The same as the other interfaces we proposed, we try to use the same
> concepts as the IEEE 802.1Q-2018 specification. So, for changing
> schedules, there are an "oper" (operational) and an "admin" schedule.
> The "admin" schedule is mutable and not in use, the "oper" schedule is
> immutable and is in use.
>
> That is, when the user first adds an schedule it is in the "admin"
> state, and it becomes "oper" when its base-time (basically when it
> starts) is reached.
>
> What this means is that now it's possible to create taprio with a schedule:
>
> $ tc qdisc add dev IFACE parent root handle 100 taprio \
> num_tc 3 \
> map 2 2 1 0 2 2 2 2 2 2 2 2 2 2 2 2 \
> queues 1@0 1@1 2@2 \
> base-time 10000000 \
> sched-entry S 03 300000 \
> sched-entry S 02 300000 \
> sched-entry S 06 400000 \
> clockid CLOCK_TAI
>
> And then, later, after the previous schedule is "promoted" to "oper",
> add a new ("admin") schedule to be used some time later:
>
> $ tc qdisc change dev IFACE parent root handle 100 taprio \
> base-time 1553121866000000000 \
> sched-entry S 02 500000 \
> sched-entry S 0f 400000 \
> clockid CLOCK_TAI
>
> When enabling the ability to change schedules, it makes sense to add
> two more defined knobs to schedules: "cycle-time" allows to truncate a
> cycle to some value, so it repeats after a well-defined value;
> "cycle-time-extension" controls how much an entry can be extended if
> it's the last one before the change of schedules, the reason is to
> avoid a very small cycle when transitioning from a schedule to
> another.
>
> With these, taprio in the software mode should provide a fairly
> complete implementation of what's defined in the Enhancements for
> Scheduled Traffic parts of the specification.
>
>
> Hardware offload
> ----------------
>
> Some workloads require better guarantees from their schedules than
> what's provided by the software implementation. This series proposes
> an interface for configuring schedules into compatible network
> controllers.
>
> This part is proposed together with the support for changing
> schedules, because it raises questions like, should the "qdisc" side
> be responsible of providing visibility into the schedules or should it
> be the driver?
>
> In this proposal, the driver is called passing the new schedule as
> soon as it is validated, and the "core" qdisc takes care of displaying
> (".dump()") the correct schedules at all times. It means that some
> logic would need to be duplicated in the driver, if the hardware
> doesn't have support for multiple schedules. But as taprio doesn't
> have enough information about the underlying controller to know how
> much in advance a schedule needs to be informed to the hardware, it
> feels like a fair compromise.
>
> The hardware offloading part of this proposal also tries to define an
> interface for frame-preemption and how it interacts with the
> scheduling of traffic, see Section 8.6.8.4 of IEEE 802.1Q-2018 for
> more information.
>
> One important difference between the qdisc interface and the
> qdisc-driver interface, is that the "gate mask" on the qdisc side
> references traffic classes, that is bit 0 of the gate mask means
> Traffic Class 0, and in the driver interface, it specifies the queues,
> that is bit 0 means queue 0. That is to say that taprio converts the
> references to traffic classes to references to queues before sending
> the offloading request to the driver.
>
>
> Request for help
> ----------------
>
> I would like that interested driver maintainers could take a look at
> the proposed interface and see if it's going to be too awkward for any
> particular device. Also, pointers to available documentation would be
> appreciated. The idea here is to start a discussion so we can have an
> interface that would work for multiple vendors.
>
>
> Links
> -----
>
> kernel patches:
> https://github.com/vcgomes/net-next/tree/taprio-add-support-for-change-v2
>
> iproute2 patches:
> https://github.com/vcgomes/iproute2/tree/taprio-add-support-for-change-v2
>
>
> Thank you,
> --
> Vinicius
>
>
>
> Vinicius Costa Gomes (6):
> taprio: Fix potencial use of invalid memory during dequeue()
> taprio: Add support adding an admin schedule
> taprio: Add support for setting the cycle-time manually
> taprio: Add support for cycle-time-extension
> taprio: Add support for frame-preemption
> taprio: Add support for hardware offloading
>
> include/linux/netdevice.h | 1 +
> include/net/pkt_sched.h | 20 +
> include/uapi/linux/pkt_sched.h | 18 +
> net/sched/sch_taprio.c | 883 +++++++++++++++++++++++++--------
> 4 files changed, 711 insertions(+), 211 deletions(-)
>
Thanks for the RFC! I was bit tied up with my release work and
couldn't comment immediately. Let me take a look on this and and also
work with my colleagues, but please bear with me as it might take a
while to get back.
Regards,
Murali
Powered by blists - more mailing lists