Skip to content
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

ThroughputRule wrong calculation and duplicate loads of same fragment #1514

Closed
5 tasks done
sebastien4 opened this issue Jul 24, 2016 · 10 comments
Closed
5 tasks done
Assignees
Milestone

Comments

@sebastien4
Copy link

sebastien4 commented Jul 24, 2016

Environment

As discussed with @LloydW93 on slack, we are experiencing rebuffering issues with slow connections around 2.5Mbps, while 2 highest bitrates available are 1.6 and 3Mbps.
Attached is a typical ThroughputRule output from the logs (rebuffering.txt).
Calculation is totally wrong sometimes.

Also I can see duplicate loads of the same fragment in Chrome network tab (see duplicate.png).
It happens on live streams, did not check on vod streams for now.

@dsparacio
Copy link
Contributor

The mismeasurements in the throughput rule are side effect due to the duplicated loads, second from cache. The duplicated loads are from this line

``js
var isEqualMedia = function (req1, req2) {
return !isNaN(req1.index) && (req1.index === req2.index) && (req1.startTime === req2.startTime) && (req1.adaptationIndex === req2.adaptationIndex);
};

**req1.index === req2.index** .   

Seems the real issue is in the Index handler with  this specific media we are duplicating index values for two different times.   


@dsparacio dsparacio added this to the v2.3.0 milestone Jul 28, 2016
@dsparacio dsparacio self-assigned this Jul 28, 2016
@dsparacio
Copy link
Contributor

Also we should ignore cached chunks in average throughput measurement in the abr rules.... Maybe @LloydW93 has some code for this?

@dsparacio
Copy link
Contributor

index 894 startTime 1469745816
index 894 startTime 1469745818
Index handler is not assigning correct index for time.

@dsparacio
Copy link
Contributor

@sebastien4 If you would like a quick fix let's try this.
Can you make this simple modification and rebuild dash.js
L85 FragmentModel.js - replace with:

return !isNaN(req1.index) && (req1.startTime === req2.startTime) && (req1.adaptationIndex === req2.adaptationIndex);

In addition to it fixing the dublicate loads, I would like to verify that the ABR rules normalize. You should not see traces like this
Default Average throughput 433656 kbps
dash.all.min.js:2 [31259] ThroughputRule requesting switch to index: 3 type: video Priority: Default Average throughput 2315 kbps
dash.all.min.js:2 [32474] ThroughputRule requesting switch to index: 4 type: video Priority: Default Average throughput 662132 kbps

When I say quick fix, there may be a better fix in the DashHandler but we are looking at major changes there so that work will resolve this issue altogether. I will make sure it does.

@sebastien4
Copy link
Author

sebastien4 commented Jul 31, 2016

@dsparacio Indeed, no more duplicate loads of chunks, and Throughput rule seems to work fine now. Let's see this in production now..

Thank you.

@dsparacio
Copy link
Contributor

Fixed with PR #1523

@sebastien4
Copy link
Author

sebastien4 commented Aug 4, 2016

@AkamaiDASH Still complaints from our users about rebufferings, whatever their available bandwidth. Not sure the quick fix solved all rebuffering issues but at least it solved duplicate loads.

There's sth going wrong with ABR algorithm and our live streams (liveDelay and stableBufferTime set to 30)..

@dsparacio
Copy link
Contributor

@sebastien4 I need more info are you still seeing estimations that are way off. Could be the cache issue @LloydW93 spoke of. I will look to add a simple block of code that will ignore frags that are cache from skewing the average throughput.

@sebastien4
Copy link
Author

No, estimations are correct. There must be sth wrong in my MPD settings..

@dsparacio
Copy link
Contributor

Closing this issue. Tracking knownThroughput issues in new issue #1530

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants