mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-02-13 03:24:26 +00:00
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:
parent
84582c3f1b
commit
39b9634425
@ -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);
|
||||||
}
|
}
|
||||||
|
@ -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) \
|
||||||
|
Loading…
x
Reference in New Issue
Block a user