-
Notifications
You must be signed in to change notification settings - Fork 681
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[WIP] cake plugins #941
base: master
Are you sure you want to change the base?
[WIP] cake plugins #941
Conversation
This is very cool. A couple notes:
Having a daily stat would be awesome |
@dtaht The issue with this is, the value is just evaluated once in a 5 minute period, so it's not an average... (I currently have no idea how to fix this - without a service). But over a period of a day it should still show up a nice graph. Marks is a great idea. :) |
cake.cake_ renders the drops, overlimits and requeues as well as the backlog cake.cake_tin_ renders the packets sent in each tin
c45d760
to
052a824
Compare
@dtaht there's your ecn graph - quite boring without ecn capable server. |
I would suggest using the JSON output of TC rather than trying to parse the human-readable output with regexes. Especially if you want to get at the tin stats... Any version of TC that has support for CAKE is also going to support JSON output... |
as well as up to days, not that I would expect those numbers, but...
@tohojo thanks for the idea, but parsing JSON in shellscript isn't an easy task. This is a task Python is suited much better for - which means a complete rewrite and quite a lot overhead for loading the python interpreter for each call. I think I stick with simple screen parsing, also since the original network.tc_-plugin is written the same way. Any thoughts on the graphs itself? |
Munin doesn't have some kind of json parsing facility? You could also depend on something like jq for the parsing... As for the graphs themselves: The backlog/dropped/overlimits/requeues graph is not CAKE-specific. Not sure how Munin organises this; is there a generic qdisc plugin as well / in addition to? Are you handling a varying number of tins correctly? |
@tohojo
Yes, theres
Those plugins read the settings with the keywords listed by tc, so diffserv3, diffserv4 and diffserv8 are implemented. They are named like the tc output, so for diffserv8 it's Tin 1, Tin 2... etc. If you set best effort, the plugin will not longer output anything, if it depends on the diffserv's. Which means the graph disappears. Edit: I meant not flowblind but best effort, corrected. |
"@RubenKelevra" <[email protected]> writes:
@tohojo
Well, no. Munin just calls executable files and grab the standard
output. So you can build it in any language you like. Calling 10
python scripts every 5 minutes just to measure some numbers for one IF
is likely an overkill.
Right, fair enough; you're the one who has to update the script if the
output parsing breaks, so obviously your call ;)
> The backlog/dropped/overlimits/requeues graph is not CAKE-specific.
> Not sure how Munin organises this; is there a generic qdisc plugin as
> well / in addition to?
Yes, theres `tc_` in the network folder. But since it's designed for
other output it probably won't output the stuff you like to see. It's
also a lot bigger. I just wanted to see the drops and the backlog for
cake, so I cutted the `tc_`-plugin down, to just graph those. Munin
handles this change fine, since the plugin has a different name.
Right. Well, mostly a UI issue, I guess; and up to the Munin upstream if
they want two different-but-related plugins :)
> Are you handling a varying number of tins correctly?
Those plugins read the settings with the keywords listed by tc, so
diffserv3, diffserv4 and diffserv8 are implemented. They are named
like the tc output, so for diffserv8 it's Tin 1, Tin 2... etc.
Cool.
What happens if the CAKE configuration changes while the same monitor
instance is running?
|
I would plot ecn marks and drops on the same graph. And a five minute summary of those is probably fine for many systems. We really don't drop all that much. Can a log scale be used? In which case you could actually include packets. cool work, exciting! I wonder if snmp has a mib that includes ecn.... |
Cool, I might use of this at an ISP in the process of trying to get cake deployed. I was hoping we'd be able to look at some of the cake tin stats alongside the SmokePing graphs. I do second the idea that using |
I'm fine with this. ;)
Munin-Plugins are separated from this community contribution repo and an official one. So the barrier for community plugins is lower. :)
The graph is instantly reconfigured. This means old values are probably disappearing, cause they are incompatible and the new ones appear. |
yes, thats an good idea. I'll implement it that way, today.
Yep, that's possible. So you want packets, drops and ecn marks in one graph? That could be too much if you consider 8 tins... I guess individual graphs would be better than. We could use logarithm scale and a stacked graph as area for packets and drops, so you get easily the proposition and a line for ecn marks. That's the way the first graph is build, backlog is a line and everything else is a stacked area. But I'm not sure about the direction, packets at the bottom, and a line to see how many packets are ecn marked?
Graphs of stuff you build are always exiting. Great to hear that from you, too. :) |
Hey cool! I would recommend to deploy it in a test environment first, to see if the graphs are working right. I'm especially worried about cake_tin_throughput_. It "should" work the way it's inteded, but I haven't found the time to check it with some synthetic throughput to measure that it's right. I guess it would be also great if we can get some graphs with real traffic back, for a subpage on bufferbloat.net to show how it's working. :) |
I'll push today a change which makes the plugins able to detect the corresponding ingress device, by parsing If the ifb device is found, the graph is reconfigured to show the ingress traffic below, like you're used to by the traffic graphs. Note that Munin is might not capable of handling reconfiguring graphs as expected. It could be wise to delete the corresponding rrd files after updating your plugin files with something like this:
To use the plugins you just need to install them in e.g.
The corresponding virtual interface with the ingress traffic of wlp3s0 mirrored, to allow handling of those with cake too, is detected automatically and plotted downwards in the graphs. If there's no virtual mirrored interface, the graphs look like before. Here are some examples: |
@RubenKelevra thanks for this! cake_tin_delay:
cake_tin_throughput:
|
What do you think about a cut down version in a personal repo as an openwrt feed? This would allow to develop this plugins without any restrictions and the sh-ones to be much smaller - I guess you don't want to run munin-node anway, so a more simple output you can push per http or similar would be enough, right? |
thanks for the feedback, can you please quote the output of Also the tc and sch_cake version would be nice. |
I am runnning sch_cake/tc from repos:
|
Using ash/dash-compatible features (instead of bash) is in my experience rarely a real restriction.
There is the excellent But I can understand, that you may want to stick to the environment you are comfortable with. In this case I will propose changes (after your plugin is merged), that will make it run with sh-only. |
Yeah, I'm comfortable with This, for example, is from me for sh: |
@gamanakis |
@sumpfralle I found some rendering issues after switching to logarithmic scale (I suspect). Maybe you got an idea about that: One direction isn't rendered properly but cut off, while the values below definitely show, that the values are collected correctly. |
You can't show negative values on a log scale...
…On 26 September 2018 04:49:09 CEST, ***@***.***" ***@***.***> wrote:
@sumpfralle I found some rendering issues after switching to
logarithmic scale (I suspect). Maybe you got an idea about that:
![cake_tin_pps_wlp3s0-day__](https://user-images.githubusercontent.com/614929/46054373-5c4a1d80-c147-11e8-9570-4b0e28b2126c.png)
![cake_wlp3s0-day__](https://user-images.githubusercontent.com/614929/46054375-5e13e100-c147-11e8-8f29-823ad8a9197a.png)
One direction isn't rendered properly but cut off, while the values
below definitely show, that the values are collected correctly.
|
How is your progress? |
Yes, I'm rooting for you here, too! Can I help? |
Ping? |
I am willing to help, if something is missing.What needs to be done? |
@dtaht @sumpfralle sorry guys those notifcations got somehow lost between work. I'm currently working on a small thing for the next 1-2 days, after this I'll complete this pull request :) |
Neat. Tracking marks vs drops is becoming interesting in light of L4S.
"@RubenKelevra" <[email protected]> writes:
… But good thing: The plugins still works, they run unchanged fine. This
are the latest graphs I got (I disabled munin a while ago)
cake_tin
cake_tin
cake_wlp
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or unsubscribe.
|
@RubenKelevra: ping? Do you need help with some finer details? |
@sumpfralle thanks for the offering, my workload just shifted massively due to the current crisis. It's on my to-do list, but I just got no time 🙄 |
There's kind of a related discussion about putting some stats in luci, also, on the openwrt forums: https://forum.openwrt.org/t/sqm-reporting/59960/5 |
there is kind of a related discussion about cake and luci over here: https://forum.openwrt.org/t/sqm-reporting/59960/5 |
Stale pull request message |
Ping? |
Is this project still alive? |
cake.cake_ renders the drops, overlimits and requeues as well as the backlog
cake.cake_tin_ renders the packets sent in each tin
This plugin can handle diffserv3, diffserv4 and diffserv8... while diffserv8 is somewhat incompatible with the others, since the tins are named differently.
@sumpfralle thanks for your initial feedback.
exit 1
for autoconf is exactly like on network.tc_, so I like to stick with this for the moment. If you think, that's an issue, feel free to change my plugin as well, when you fix network.tc_