Re: [PATCH iproute2-next v3 2/2] tc: implement support for terse dump
From: Jamal Hadi Salim <jhs@mojatatu.com>
Date: 2020-10-20 12:29:24
On 2020-10-19 11:18 a.m., Vlad Buslov wrote:
On Mon 19 Oct 2020 at 16:48, Jamal Hadi Salim [off-list ref] wrote:quoted
On 2020-10-18 8:16 a.m., Vlad Buslov wrote:
[..]
quoted
That could be a good thing, no? you get to see the action name with the error. Its really not a big deal if you decide to do a->terse_print() instead.Maybe. Just saying that this change would also change user-visible iproute2 behavior.
You are right(for the non-terse output). tbh, not sure if it is a big deal given it happens only for the error case (where scripts look for exit codes typically); having said that: a ->terse_print() would be ok
It is not a trivial change. To get this data we need to call tc_action_ops->dump() which puts bunch of other unrelated info in TCA_OPTIONS nested attr. This hurts both dump size and runtime performance. Even if we add another argument to dump "terse dump, print only index", index is still part of larger options structure which includes at least following fields: #define tc_gen \ __u32 index; \ __u32 capab; \ int action; \ int refcnt; \ int bindcnt
index is the _only_ important field for analytics purposes in that list. i.e if i know the index i can correlate stats with one or more filters (whether shared or not). My worry is you have a very specific use case for your hardware or maybe it is ovs - where counters are uniquely tied to filters and there is no sharing. And possibly maybe only one counter can be tied to a filter (was not sure if you could handle more than one action in the terse from looking at the code). Our assumptions so far had no such constraints. Maybe a new TERSE_OPTIONS TLV, and then add an extra flag to indicate interest in the tlv? Peharps store the stats in it as well.
This wouldn't be much of a terse dump anymore. What prevents user that needs all action info from calling regular dump? It is not like terse dump substitutes it or somehow makes it harder to use.
Both scaling and correctness are important. You have the cookie in the terse dump, thats a lot of data. In our case we totally bypass filters to reduce the amount of data crossing to user space (tc action ls). Theres still a lot of data crossing which we could trim with a terse dump. All we are interested in are stats. Another alternative is perhaps to introduce the index for the direct dump. cheers, jamal