- Name: "download_limiting_backend_speed",
- Help: "Limiting backend speed (bytes per second) when serving file downloads, bucketed by transfer size range",
+ Name: "download_apparent_backend_speed",
+ Help: "Apparent download speed from the backend (bytes per second) when serving file downloads, bucketed by transfer size range (see https://dev.arvados.org/projects/arvados/wiki/WebDAV_performance_metrics for explanation)",
Buckets: []float64{10_000, 1_000_000, 10_000_000, 100_000_000, 1_000_000_000, math.Inf(+1)},
}, []string{"size_range"}),
mUploadSpeed: prometheus.NewHistogramVec(prometheus.HistogramOpts{
Buckets: []float64{10_000, 1_000_000, 10_000_000, 100_000_000, 1_000_000_000, math.Inf(+1)},
}, []string{"size_range"}),
mUploadSpeed: prometheus.NewHistogramVec(prometheus.HistogramOpts{
func newDownloadTracker(w http.ResponseWriter) *downloadTracker {
return &downloadTracker{ResponseWriter: w, t0: time.Now()}
}
func newDownloadTracker(w http.ResponseWriter) *downloadTracker {
return &downloadTracker{ResponseWriter: w, t0: time.Now()}
}
func (dt *downloadTracker) Write(p []byte) (int, error) {
if dt.lastByte.IsZero() {
dt.backendWait += time.Since(dt.t0)
func (dt *downloadTracker) Write(p []byte) (int, error) {
if dt.lastByte.IsZero() {
dt.backendWait += time.Since(dt.t0)