Bug 1877000 - Add perfstats for transaction wait time r=necko-reviewers,kershaw

To track possible regressions/improvements in this metric.

Differential Revision: https://phabricator.services.mozilla.com/D199815
This commit is contained in:
Andrew Creskey 2024-01-29 14:57:02 +00:00
parent 84582c3f1b
commit 39b9634425
2 changed files with 9 additions and 4 deletions

View File

@ -20,6 +20,7 @@
#include "NullHttpTransaction.h" #include "NullHttpTransaction.h"
#include "SpeculativeTransaction.h" #include "SpeculativeTransaction.h"
#include "mozilla/Components.h" #include "mozilla/Components.h"
#include "mozilla/PerfStats.h"
#include "mozilla/ProfilerMarkers.h" #include "mozilla/ProfilerMarkers.h"
#include "mozilla/SpinEventLoopUntil.h" #include "mozilla/SpinEventLoopUntil.h"
#include "mozilla/StaticPrefs_network.h" #include "mozilla/StaticPrefs_network.h"
@ -1622,9 +1623,10 @@ nsresult nsHttpConnectionMgr::DispatchTransaction(ConnectionEntry* ent,
// when a muxed connection (e.g. h2) becomes available. // when a muxed connection (e.g. h2) becomes available.
trans->CancelPacing(NS_OK); trans->CancelPacing(NS_OK);
TimeStamp now = TimeStamp::Now();
auto recordPendingTimeForHTTPSRR = [&](nsCString& aKey) { auto recordPendingTimeForHTTPSRR = [&](nsCString& aKey) {
uint32_t stage = trans->HTTPSSVCReceivedStage(); uint32_t stage = trans->HTTPSSVCReceivedStage();
TimeDuration elapsed = TimeStamp::Now() - trans->GetPendingTime(); TimeDuration elapsed = now - trans->GetPendingTime();
if (HTTPS_RR_IS_USED(stage)) { if (HTTPS_RR_IS_USED(stage)) {
glean::networking::transaction_wait_time_https_rr.AccumulateRawDuration( glean::networking::transaction_wait_time_https_rr.AccumulateRawDuration(
elapsed); elapsed);
@ -1632,6 +1634,8 @@ nsresult nsHttpConnectionMgr::DispatchTransaction(ConnectionEntry* ent,
} else { } else {
glean::networking::transaction_wait_time.AccumulateRawDuration(elapsed); glean::networking::transaction_wait_time.AccumulateRawDuration(elapsed);
} }
PerfStats::RecordMeasurement(PerfStats::Metric::HttpTransactionWaitTime,
elapsed);
}; };
nsAutoCString httpVersionkey("h1"_ns); nsAutoCString httpVersionkey("h1"_ns);
@ -1645,11 +1649,11 @@ nsresult nsHttpConnectionMgr::DispatchTransaction(ConnectionEntry* ent,
if (conn->UsingSpdy()) { if (conn->UsingSpdy()) {
httpVersionkey = "h2"_ns; httpVersionkey = "h2"_ns;
AccumulateTimeDelta(Telemetry::TRANSACTION_WAIT_TIME_SPDY, AccumulateTimeDelta(Telemetry::TRANSACTION_WAIT_TIME_SPDY,
trans->GetPendingTime(), TimeStamp::Now()); trans->GetPendingTime(), now);
} else { } else {
httpVersionkey = "h3"_ns; httpVersionkey = "h3"_ns;
AccumulateTimeDelta(Telemetry::TRANSACTION_WAIT_TIME_HTTP3, AccumulateTimeDelta(Telemetry::TRANSACTION_WAIT_TIME_HTTP3,
trans->GetPendingTime(), TimeStamp::Now()); trans->GetPendingTime(), now);
} }
recordPendingTimeForHTTPSRR(httpVersionkey); recordPendingTimeForHTTPSRR(httpVersionkey);
trans->SetPendingTime(false); trans->SetPendingTime(false);
@ -1664,7 +1668,7 @@ nsresult nsHttpConnectionMgr::DispatchTransaction(ConnectionEntry* ent,
if (NS_SUCCEEDED(rv) && !trans->GetPendingTime().IsNull()) { if (NS_SUCCEEDED(rv) && !trans->GetPendingTime().IsNull()) {
AccumulateTimeDelta(Telemetry::TRANSACTION_WAIT_TIME_HTTP, AccumulateTimeDelta(Telemetry::TRANSACTION_WAIT_TIME_HTTP,
trans->GetPendingTime(), TimeStamp::Now()); trans->GetPendingTime(), now);
recordPendingTimeForHTTPSRR(httpVersionkey); recordPendingTimeForHTTPSRR(httpVersionkey);
trans->SetPendingTime(false); trans->SetPendingTime(false);
} }

View File

@ -47,6 +47,7 @@
MACRO(HttpChannelAsyncOpenToTransactionPending) \ MACRO(HttpChannelAsyncOpenToTransactionPending) \
MACRO(HttpChannelResponseStartParentToContent) \ MACRO(HttpChannelResponseStartParentToContent) \
MACRO(HttpChannelResponseEndParentToContent) \ MACRO(HttpChannelResponseEndParentToContent) \
MACRO(HttpTransactionWaitTime) \
MACRO(ResponseEndSocketToParent) \ MACRO(ResponseEndSocketToParent) \
MACRO(OnStartRequestSocketToParent) \ MACRO(OnStartRequestSocketToParent) \
MACRO(OnDataAvailableSocketToParent) \ MACRO(OnDataAvailableSocketToParent) \