-
Notifications
You must be signed in to change notification settings - Fork 64
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
Bandwidth Estimator #25
Comments
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
@Sean-Der @mengelbart are there use cases where having all connection stats available real-time/globally in something like redpanda/kafka would be useful to pion users? The intention would be connection orchestration, bandwidth concerns, and business logic specific to a user, which up/down scales automatically using kafka consumer groups. In all likelihood it would be a separate repo. What would be useful about it is being able to try out new strategies more quickly/easily. Could even bring something like tensorflow into the picture for bandwidth concerns, etc. |
I'd really like to be able to construct a lag meter somehow. |
@dtaht you already have one — receiver reports contain all the information needed to compute application-layer RTT. Have a look at /stats.html next time you use Galene, where all of that is exported. @unicomp21 In my experience, the accounting libraries tend to use a set of global atomics to keep statistics, which causes cache-line bouncing in higly concurrent applications. Since Galene has been carefully tuned to scale well across multiple cores, that's something that makes me nervous. Please don't add dependencies on third-party accounting libraries in low-level code. |
@jech on-screen, much like you can see a lagmeter in many games. If the data is there, can the javascript pull it out? galene Push it to each client? (e.g. see the lag others are experiencing). Example: |
That's pretty much off-topic for this thread, perhaps you'll want to open an issue in Galene or raise the issue on Galene's mailing list. |
agreed. Apologies. |
You should maybe update the Todo list from the issue description now that gcc has landed? :-) |
Sorry I missed this @thiblahute. Updated the tracking issue Are you using the GCC implementation at all? Any feedback or questions I would always love to talk about it! |
@Sean-Der I am not using it no, I just read your implementation while implementing GCC for GStreamer: https://gstreamer.freedesktop.org/documentation/rsrtp/rtpgccbwe.html?gi-language=c#rtpgccbwe |
First of all I want to thanks everybody involved in GCC implementation! Thanks for very useful comments in this thread either. I faced with a problem during my tests and I'm seeking a bug in GCC implementation to report it appropriately, but as GCC code is full of math let me explain what I encountered and may be @mengelbart or somebody else give me some advises to find this problem quickly. Unfortunately it's hard to just provide a test to reproduce this case. I'm sorry.
I send single bitrate stream of 750K. I don't change stream bitrate during the test target bitrate 2000000 Once Max bitrate reached by estimator I run following script
make sure estimator still shows max bitrate and press Enter During script execution estimated bandwidth drops to min bandwidth and sometimes even below(rarely). I've attached observed stats after script execution. Unfortunately problem is not 100% reproducible, but if you run this script several times, you will eventually face it. |
Interesting. Part of my issue is in trusting netem to change anything without screwing up the link. can you also generate tc -s qdisc show stats? a few times after each change? Are you observing any drops at all? Any queue depth at all? As a completely opposite test of what you are trying to do, could you try this with cake, changing the bandwidth parameter? I trust cake to take the change command, and want to permute the gcc estimator to what cake presents as bandwidth and delay (e.g, if you change it to 500k, the delay will skyrocket, and loss start to happen), rather than just applying delay. (btw, you can get rid of a del/add cycle with replace) tc qdisc replace dev lo root cake bandwidth 2.5mbit # tc qdisc change dev lo root cake bandwidth 500kbit # etc |
@dtaht it's a pleasure to be in the same thread with the legend. I've prepared scripts and even run some but had to dig into |
@dtaht, I've checked netem and it doesn't hurt link. I've checked loss_based_bwe.go. I both checked and debugged code as well as patched "updateLossEstimate" method and hardcoded "lossRatio" to always be "0". Problem reproduced with these patches. This means the problem is not in loss_based_bwe.go. I'll inspect delay based bwe. My quess is that delay based bwe calculates delay "mean" and if current "dispersion" >= some X% of mean then this is a signal to decrease bandwidth. The problem is probably in fact that in case of initial 0ms delay in localhost interface then I set 5ms this is a huge dispersion from delay estimator POV even though absolute delay value is very little. I've performed cake-based tests. They reproduced the problem the same way as netem based tests but netem is more simple to calculate. |
Hi @dtaht,
Another problem is why we come to overuse state. But we will fix it a little later. |
Hi all, |
It has been 10+ years since I looked at gcc. My principal critique of the current codebase was that delay is more important than loss. |
I am otherwise kind of low on brain cells! |
Dave,
Your suggestion about ‘cake’ was very helpful.
I’m sorry bothering you, but I needed someone to review my results so I
tried my luck with you;)
|
The issue covers everything we want to do around Congestion Estimation and Pion. This covers a Bandwidth Estimator in Pion, and generating feedback for remote peers.
@mengelbart is the owner of this work. If you have feedback/suggestions/ideas he knows this all the best!
In the future we will also need
The text was updated successfully, but these errors were encountered: