-
Notifications
You must be signed in to change notification settings - Fork 10
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
Round Trip Latency implemention varies from RFC spec #10
Comments
I think the answer lies in https://pkg.go.dev/net/http/httptrace#WithClientTrace |
Thank you!! That's exactly what @cpaasch and I settled on. What's interesting is that there is a reasonable "hack" that could be done in the interim. The time it takes to complete the entire process of doing an 1-byte HTTP GET using a fresh connection between the client and server is effectively the sum of the time it takes to perform 4 of the 5 of "these values". Moreover, because of an issue with the Apple CDN, we are already effectively ignoring that 5th and final value (until the issue is resolved). Therefore, the value that the go client calculates is already essentially:
@cpaasch and I are also discussing the importance of defining "probe" in Section 4.2. "probe" and "RTT" seem to be confusingly (at least for my little brain) used in the context of calculating the RPM and it is not clear whether the RPM is the number of probes (each of which include 5 RTTs) per minute or whether it is the number of RTTs per minute. @cpaasch is going to help us clarify this confusion so that it is clearer for people like me who are clearly not as smart as he and the other authors. All that is to say: I sincerely appreciate your feedback and we are definitely going to use the trace library that you suggested in order to fix the RPM calculation! Thank you again! |
See Issue #10. Begin implementing the plumbing required to perform more precise RTT/RPM measurements.
FYI: The beginning of the work needed to resolve this issue has been committed. See e563d7f |
We are starting to address this: 2a9feb8 I hope that it helps!! |
goresponsiveness/utilities/utilities.go
Lines 78 to 115 in 710fb3c
https://twitter.com/cpaasch11/status/1506730000644390916?s=20&t=rx0uKGBfvmLYvRyx1zKQ0Q
Currently, the code uses the time for the whole client.get() and response.ReadAll(body). Per the RFC, DNS Time, TCP time, TLS time, unloaded HTTP/2 time, and loaded HTTP/2 time should be used, creating an average of all of these values. These values can be obtained using net/http/httptrace WithClientTrace.
The text was updated successfully, but these errors were encountered: