Bug 1898171 - Add profiler markers for when DNS resolutions start and are completed r=acreskey,necko-reviewers,julienw,kershaw

Differential Revision: https://phabricator.services.mozilla.com/D211172
This commit is contained in:
Valentin Gosu 2024-06-04 17:59:19 +00:00
parent 7ebb860b81
commit e85939ad56

View file

@ -90,6 +90,40 @@ static const unsigned int NEGATIVE_RECORD_LIFETIME = 60;
// for threads MaxResolverThreadsAnyPriority() + 1 -> MaxResolverThreads()
#define ShortIdleTimeoutSeconds 60
using namespace mozilla;
namespace geckoprofiler::markers {
struct HostResolverMarker {
static constexpr Span<const char> MarkerTypeName() {
return MakeStringSpan("HostResolver");
}
static void StreamJSONMarkerData(
mozilla::baseprofiler::SpliceableJSONWriter& aWriter,
const mozilla::ProfilerString8View& aHost,
const mozilla::ProfilerString8View& aOriginSuffix, uint16_t aType,
uint32_t aFlags) {
aWriter.StringProperty("host", aHost);
aWriter.StringProperty("originSuffix", aOriginSuffix);
aWriter.IntProperty("qtype", aType);
aWriter.StringProperty("flags", nsPrintfCString("0x%x", aFlags));
}
static MarkerSchema MarkerTypeDisplay() {
using MS = MarkerSchema;
MS schema(MS::Location::MarkerChart, MS::Location::MarkerTable);
schema.SetTableLabel("{marker.name} - {marker.data.host}");
schema.AddKeyFormatSearchable("host", MS::Format::SanitizedString,
MS::Searchable::Searchable);
schema.AddKeyFormatSearchable("originSuffix", MS::Format::SanitizedString,
MS::Searchable::Searchable);
schema.AddKeyFormat("qtype", MS::Format::Integer);
schema.AddKeyFormat("flags", MS::Format::String);
return schema;
}
};
} // namespace geckoprofiler::markers
//----------------------------------------------------------------------------
namespace mozilla::net {
@ -487,6 +521,9 @@ nsresult nsHostResolver::ResolveHost(const nsACString& aHost,
originSuffix.get(), flags & RES_BYPASS_CACHE ? " - bypassing cache" : "",
flags & RES_REFRESH_CACHE ? " - refresh cache" : "", type, this));
PROFILER_MARKER("nsHostResolver::ResolveHost", NETWORK, {},
HostResolverMarker, host, originSuffix, type, flags);
// ensure that we are working with a valid hostname before proceeding. see
// bug 304904 for details.
if (!net_IsValidHostName(host)) {
@ -1656,6 +1693,10 @@ nsHostResolver::LookupStatus nsHostResolver::CompleteLookupLocked(
}
}
PROFILER_MARKER("nsHostResolver::CompleteLookupLocked", NETWORK, {},
HostResolverMarker, addrRec->host, addrRec->originSuffix,
addrRec->type, addrRec->flags);
// get the list of pending callbacks for this lookup, and notify
// them that the lookup is complete.
mozilla::LinkedList<RefPtr<nsResolveHostCallback>> cbs =
@ -1763,6 +1804,10 @@ nsHostResolver::LookupStatus nsHostResolver::CompleteLookupByTypeLocked(
typeRec->RecordReason(aReason);
}
PROFILER_MARKER("nsHostResolver::CompleteLookupByTypeLocked", NETWORK, {},
HostResolverMarker, typeRec->host, typeRec->originSuffix,
typeRec->type, typeRec->flags);
mozilla::LinkedList<RefPtr<nsResolveHostCallback>> cbs =
std::move(typeRec->mCallbacks);