Commit 61604665 authored by Miriam Gershenson's avatar Miriam Gershenson Committed by Commit Bot

DNS histogram cleanup, part 3

This CL removes all the old DNS.Resolve* and AsyncDNS.Resolve*
histograms and replaces them with a new set. The new Net.DNS.Resolve*
histograms measure timing and success/failure at the Job layer, and each
type of Task gets its own set to measure Task layer timing and
success/failure.

Bug: 769320
Change-Id: I0b0df897310a474fd11022f932724c8d40789090
Reviewed-on: https://chromium-review.googlesource.com/687836
Commit-Queue: Miriam Gershenson <mgersh@chromium.org>
Reviewed-by: default avatarJulia Tuttle <juliatuttle@chromium.org>
Reviewed-by: default avatarIlya Sherman <isherman@chromium.org>
Cr-Commit-Position: refs/heads/master@{#505215}
parent 7976c1c0
......@@ -693,7 +693,6 @@ class HostResolverImpl::ProcTask
attempt_number_(0),
completed_attempt_number_(0),
completed_attempt_error_(ERR_UNEXPECTED),
had_non_speculative_request_(false),
net_log_(job_net_log) {
if (!params_.resolver_proc.get())
params_.resolver_proc = HostResolverProc::GetDefault();
......@@ -721,11 +720,6 @@ class HostResolverImpl::ProcTask
net_log_.EndEvent(NetLogEventType::HOST_RESOLVER_IMPL_PROC_TASK);
}
void set_had_non_speculative_request() {
DCHECK(network_task_runner_->BelongsToCurrentThread());
had_non_speculative_request_ = true;
}
bool was_canceled() const {
DCHECK(network_task_runner_->BelongsToCurrentThread());
return callback_.is_null();
......@@ -816,11 +810,6 @@ class HostResolverImpl::ProcTask
if (error != OK && NetworkChangeNotifier::IsOffline())
error = ERR_INTERNET_DISCONNECTED;
// If this is the first attempt that is finishing later, then record data
// for the first attempt. Won't contaminate with retry attempt's data.
if (!was_retry_attempt)
RecordPerformanceHistograms(start_time, error, os_error);
RecordAttemptHistograms(start_time, attempt_number, error, os_error);
if (was_canceled())
......@@ -841,6 +830,8 @@ class HostResolverImpl::ProcTask
if (was_completed())
return;
RecordTaskHistograms(start_time, error, os_error);
// Copy the results from the first worker thread that resolves the host.
results_ = results;
completed_attempt_number_ = attempt_number;
......@@ -864,76 +855,20 @@ class HostResolverImpl::ProcTask
callback_.Run(error, results_);
}
void RecordPerformanceHistograms(const base::TimeTicks& start_time,
void RecordTaskHistograms(const base::TimeTicks& start_time,
const int error,
const int os_error) const {
DCHECK(network_task_runner_->BelongsToCurrentThread());
enum Category { // Used in UMA_HISTOGRAM_ENUMERATION.
RESOLVE_SUCCESS,
RESOLVE_FAIL,
RESOLVE_SPECULATIVE_SUCCESS,
RESOLVE_SPECULATIVE_FAIL,
RESOLVE_MAX, // Bounding value.
};
Category category = RESOLVE_MAX; // Illegal value for later DCHECK only.
base::TimeDelta duration = base::TimeTicks::Now() - start_time;
if (error == OK) {
if (had_non_speculative_request_) {
category = RESOLVE_SUCCESS;
UMA_HISTOGRAM_LONG_TIMES_100("DNS.ResolveSuccess", duration);
} else {
category = RESOLVE_SPECULATIVE_SUCCESS;
UMA_HISTOGRAM_LONG_TIMES_100("DNS.ResolveSpeculativeSuccess", duration);
}
if (error == OK)
UMA_HISTOGRAM_LONG_TIMES_100("Net.DNS.ProcTask.SuccessTime", duration);
else
UMA_HISTOGRAM_LONG_TIMES_100("Net.DNS.ProcTask.FailureTime", duration);
// Log DNS lookups based on |address_family|. This will help us determine
// if IPv4 or IPv4/6 lookups are faster or slower.
switch (key_.address_family) {
case ADDRESS_FAMILY_IPV4:
UMA_HISTOGRAM_LONG_TIMES_100("DNS.ResolveSuccess_FAMILY_IPV4",
duration);
break;
case ADDRESS_FAMILY_IPV6:
UMA_HISTOGRAM_LONG_TIMES_100("DNS.ResolveSuccess_FAMILY_IPV6",
duration);
break;
case ADDRESS_FAMILY_UNSPECIFIED:
UMA_HISTOGRAM_LONG_TIMES_100("DNS.ResolveSuccess_FAMILY_UNSPEC",
duration);
break;
}
} else {
if (had_non_speculative_request_) {
category = RESOLVE_FAIL;
UMA_HISTOGRAM_LONG_TIMES_100("DNS.ResolveFail", duration);
} else {
category = RESOLVE_SPECULATIVE_FAIL;
UMA_HISTOGRAM_LONG_TIMES_100("DNS.ResolveSpeculativeFail", duration);
}
// Log DNS lookups based on |address_family|. This will help us determine
// if IPv4 or IPv4/6 lookups are faster or slower.
switch (key_.address_family) {
case ADDRESS_FAMILY_IPV4:
UMA_HISTOGRAM_LONG_TIMES_100("DNS.ResolveFail_FAMILY_IPV4", duration);
break;
case ADDRESS_FAMILY_IPV6:
UMA_HISTOGRAM_LONG_TIMES_100("DNS.ResolveFail_FAMILY_IPV6", duration);
break;
case ADDRESS_FAMILY_UNSPECIFIED:
UMA_HISTOGRAM_LONG_TIMES_100("DNS.ResolveFail_FAMILY_UNSPEC",
duration);
break;
}
UMA_HISTOGRAM_CUSTOM_ENUMERATION(kOSErrorsForGetAddrinfoHistogramName,
std::abs(os_error),
GetAllGetAddrinfoOSErrors());
}
DCHECK_LT(static_cast<int>(category),
static_cast<int>(RESOLVE_MAX)); // Be sure it was set.
UMA_HISTOGRAM_ENUMERATION("DNS.ResolveCategory", category, RESOLVE_MAX);
}
void RecordAttemptHistograms(const base::TimeTicks& start_time,
const uint32_t attempt_number,
......@@ -1017,12 +952,6 @@ class HostResolverImpl::ProcTask
// The time when retry attempt was finished.
base::TimeTicks retry_attempt_finished_time_;
// True if a non-speculative request was ever attached to this job
// (regardless of whether or not it was later canceled.
// This boolean is used for histogramming the duration of jobs used to
// service non-speculative requests.
bool had_non_speculative_request_;
AddressList results_;
NetLogWithSource net_log_;
......@@ -1351,12 +1280,8 @@ class HostResolverImpl::Job : public PrioritizedDispatcher::Job,
base::Bind(&NetLogJobAttachCallback, request->source_net_log().source(),
priority()));
// TODO(szym): Check if this is still needed.
if (!request->info().is_speculative()) {
if (!request->info().is_speculative())
had_non_speculative_request_ = true;
if (proc_task_.get())
proc_task_->set_had_non_speculative_request();
}
requests_.push_back(request);
......@@ -1533,9 +1458,10 @@ class HostResolverImpl::Job : public PrioritizedDispatcher::Job,
had_dns_config_ = resolver_->HaveDnsConfig();
base::TimeTicks now = base::TimeTicks::Now();
base::TimeDelta queue_time = now - creation_time_;
base::TimeDelta queue_time_after_change = now - priority_change_time_;
start_time_ = base::TimeTicks::Now();
base::TimeDelta queue_time = start_time_ - creation_time_;
base::TimeDelta queue_time_after_change =
start_time_ - priority_change_time_;
DNS_HISTOGRAM_BY_PRIORITY("Net.DNS.JobQueueTime", priority(), queue_time);
DNS_HISTOGRAM_BY_PRIORITY("Net.DNS.JobQueueTimeAfterChange", priority(),
......@@ -1565,8 +1491,6 @@ class HostResolverImpl::Job : public PrioritizedDispatcher::Job,
base::Unretained(this), base::TimeTicks::Now()),
net_log_);
if (had_non_speculative_request_)
proc_task_->set_had_non_speculative_request();
// Start() could be called from within Resolve(), hence it must NOT directly
// call OnProcTaskComplete, for example, on synchronous failure.
proc_task_->Start();
......@@ -1588,7 +1512,7 @@ class HostResolverImpl::Job : public PrioritizedDispatcher::Job,
} else {
UmaAsyncDnsResolveStatus(RESOLVE_STATUS_PROC_SUCCESS);
}
UMA_HISTOGRAM_SPARSE_SLOWLY("AsyncDNS.ResolveError",
UMA_HISTOGRAM_SPARSE_SLOWLY("Net.DNS.DnsTask.Errors",
std::abs(dns_task_error_));
resolver_->OnDnsTaskResolve(dns_task_error_);
} else {
......@@ -1631,7 +1555,7 @@ class HostResolverImpl::Job : public PrioritizedDispatcher::Job,
void OnDnsTaskFailure(const base::WeakPtr<DnsTask>& dns_task,
base::TimeDelta duration,
int net_error) {
UMA_HISTOGRAM_LONG_TIMES_100("AsyncDNS.ResolveFail", duration);
UMA_HISTOGRAM_LONG_TIMES_100("Net.DNS.DnsTask.FailureTime", duration);
if (!dns_task)
return;
......@@ -1666,22 +1590,8 @@ class HostResolverImpl::Job : public PrioritizedDispatcher::Job,
OnDnsTaskFailure(dns_task_->AsWeakPtr(), duration, net_error);
return;
}
UMA_HISTOGRAM_LONG_TIMES_100("AsyncDNS.ResolveSuccess", duration);
// Log DNS lookups based on |address_family|.
switch (key_.address_family) {
case ADDRESS_FAMILY_IPV4:
UMA_HISTOGRAM_LONG_TIMES_100("AsyncDNS.ResolveSuccess_FAMILY_IPV4",
duration);
break;
case ADDRESS_FAMILY_IPV6:
UMA_HISTOGRAM_LONG_TIMES_100("AsyncDNS.ResolveSuccess_FAMILY_IPV6",
duration);
break;
case ADDRESS_FAMILY_UNSPECIFIED:
UMA_HISTOGRAM_LONG_TIMES_100("AsyncDNS.ResolveSuccess_FAMILY_UNSPEC",
duration);
break;
}
UMA_HISTOGRAM_LONG_TIMES_100("Net.DNS.DnsTask.SuccessTime", duration);
UmaAsyncDnsResolveStatus(RESOLVE_STATUS_DNS_SUCCESS);
RecordTTL(ttl);
......@@ -1712,6 +1622,69 @@ class HostResolverImpl::Job : public PrioritizedDispatcher::Job,
dns_task_->StartSecondTransaction();
}
void RecordJobHistograms(int error) {
enum Category { // Used in UMA_HISTOGRAM_ENUMERATION.
RESOLVE_SUCCESS,
RESOLVE_FAIL,
RESOLVE_SPECULATIVE_SUCCESS,
RESOLVE_SPECULATIVE_FAIL,
RESOLVE_MAX, // Bounding value.
};
Category category = RESOLVE_MAX; // Illegal value for later DCHECK only.
base::TimeDelta duration = base::TimeTicks::Now() - start_time_;
if (error == OK) {
if (had_non_speculative_request_) {
category = RESOLVE_SUCCESS;
UMA_HISTOGRAM_LONG_TIMES_100("Net.DNS.ResolveSuccessTime", duration);
switch (key_.address_family) {
case ADDRESS_FAMILY_IPV4:
UMA_HISTOGRAM_LONG_TIMES_100("Net.DNS.ResolveSuccessTime.IPV4",
duration);
break;
case ADDRESS_FAMILY_IPV6:
UMA_HISTOGRAM_LONG_TIMES_100("Net.DNS.ResolveSuccessTime.IPV6",
duration);
break;
case ADDRESS_FAMILY_UNSPECIFIED:
UMA_HISTOGRAM_LONG_TIMES_100("Net.DNS.ResolveSuccessTime.UNSPEC",
duration);
break;
}
} else {
category = RESOLVE_SPECULATIVE_SUCCESS;
UMA_HISTOGRAM_LONG_TIMES_100("Net.DNS.ResolveSuccessTime.Speculative",
duration);
}
} else {
if (had_non_speculative_request_) {
category = RESOLVE_FAIL;
UMA_HISTOGRAM_LONG_TIMES_100("Net.DNS.ResolveFailureTime", duration);
switch (key_.address_family) {
case ADDRESS_FAMILY_IPV4:
UMA_HISTOGRAM_LONG_TIMES_100("Net.DNS.ResolveSuccessTime.IPV4",
duration);
break;
case ADDRESS_FAMILY_IPV6:
UMA_HISTOGRAM_LONG_TIMES_100("Net.DNS.ResolveSuccessTime.IPV6",
duration);
break;
case ADDRESS_FAMILY_UNSPECIFIED:
UMA_HISTOGRAM_LONG_TIMES_100("Net.DNS.ResolveSuccessTime.UNSPEC",
duration);
break;
}
} else {
category = RESOLVE_SPECULATIVE_FAIL;
UMA_HISTOGRAM_LONG_TIMES_100("Net.DNS.ResolveFailureTime.Speculative",
duration);
}
}
DCHECK_LT(static_cast<int>(category),
static_cast<int>(RESOLVE_MAX)); // Be sure it was set.
UMA_HISTOGRAM_ENUMERATION("Net.DNS.ResolveCategory", category, RESOLVE_MAX);
}
// Performs Job's last rites. Completes all Requests. Deletes this.
void CompleteRequests(const HostCache::Entry& entry,
base::TimeDelta ttl) {
......@@ -1763,8 +1736,10 @@ class HostResolverImpl::Job : public PrioritizedDispatcher::Job,
bool did_complete = (entry.error() != ERR_NETWORK_CHANGED) &&
(entry.error() != ERR_HOST_RESOLVER_QUEUE_TOO_LARGE);
if (did_complete)
if (did_complete) {
resolver_->CacheResult(key_, entry, ttl);
RecordJobHistograms(entry.error());
}
// Complete all of the requests that were attached to the job and
// detach them.
......@@ -1827,6 +1802,7 @@ class HostResolverImpl::Job : public PrioritizedDispatcher::Job,
const base::TimeTicks creation_time_;
base::TimeTicks priority_change_time_;
base::TimeTicks start_time_;
NetLogWithSource net_log_;
......
......@@ -3731,6 +3731,9 @@ http://cs/file:chrome/histograms.xml - but prefer this file for new entries.
</histogram>
<histogram name="AsyncDNS.ResolveError" enum="NetErrorCodes">
<obsolete>
Deprecated as of 9/2017. Replaced by Net.DNS.DnsTaskError.
</obsolete>
<owner>mgersh@chromium.org</owner>
<summary>
Counts of specific error codes returned by DnsTask if a subsequent ProcTask
......@@ -3739,6 +3742,9 @@ http://cs/file:chrome/histograms.xml - but prefer this file for new entries.
</histogram>
<histogram name="AsyncDNS.ResolveFail" units="ms">
<obsolete>
Deprecated as of 9/2017. Replaced by Net.DNS.DnsTaskFail.
</obsolete>
<owner>mgersh@chromium.org</owner>
<summary>
Duration of time taken by DnsTask in resolutions that failed. Excludes time
......@@ -3747,6 +3753,9 @@ http://cs/file:chrome/histograms.xml - but prefer this file for new entries.
</histogram>
<histogram name="AsyncDNS.ResolveStatus" enum="AsyncDNSResolveStatus">
<obsolete>
Deprecated as of 9/2017.
</obsolete>
<owner>mgersh@chromium.org</owner>
<summary>
Counts of the overall results of using asynchronous DNS in HostResolverImpl.
......@@ -3756,6 +3765,9 @@ http://cs/file:chrome/histograms.xml - but prefer this file for new entries.
</histogram>
<histogram name="AsyncDNS.ResolveSuccess" units="ms">
<obsolete>
Deprecated as of 9/2017. Replaced by Net.DNS.DnsTaskSuccess.
</obsolete>
<owner>mgersh@chromium.org</owner>
<summary>
Duration of time taken by DnsTask in resolutions that succeeded.
......@@ -3763,6 +3775,9 @@ http://cs/file:chrome/histograms.xml - but prefer this file for new entries.
</histogram>
<histogram name="AsyncDNS.ResolveSuccess_FAMILY_IPV4" units="ms">
<obsolete>
Deprecated as of 9/2017. Replaced by Net.DNS.DnsTaskSuccess.
</obsolete>
<owner>mgersh@chromium.org</owner>
<summary>
Same as AsyncDNS.ResolveSuccess, but limited to pure IPv4 lookups.
......@@ -3770,6 +3785,9 @@ http://cs/file:chrome/histograms.xml - but prefer this file for new entries.
</histogram>
<histogram name="AsyncDNS.ResolveSuccess_FAMILY_IPV6" units="ms">
<obsolete>
Deprecated as of 9/2017. Replaced by Net.DNS.DnsTaskSuccess.
</obsolete>
<owner>mgersh@chromium.org</owner>
<summary>
Same as AsyncDNS.ResolveSuccess, but limited to pure IPv6 lookups.
......@@ -3777,6 +3795,9 @@ http://cs/file:chrome/histograms.xml - but prefer this file for new entries.
</histogram>
<histogram name="AsyncDNS.ResolveSuccess_FAMILY_UNSPEC" units="ms">
<obsolete>
Deprecated as of 9/2017. Replaced by Net.DNS.DnsTaskSuccess.
</obsolete>
<owner>mgersh@chromium.org</owner>
<summary>
Same as AsyncDNS.ResolveSuccess, but limited to IPv4/IPv6 lookups.
......@@ -14693,6 +14714,9 @@ http://cs/file:chrome/histograms.xml - but prefer this file for new entries.
</histogram>
<histogram name="DNS.ResolveCategory" enum="ResolutionCategory">
<obsolete>
Deprecated as of 9/2017. Replaced by Net.DNS.ResolveCategory.
</obsolete>
<owner>mgersh@chromium.org</owner>
<summary>
Counts of successes and failures of OS resolutions in various categories.
......@@ -14700,6 +14724,9 @@ http://cs/file:chrome/histograms.xml - but prefer this file for new entries.
</histogram>
<histogram name="DNS.ResolveFail" units="ms">
<obsolete>
Deprecated as of 9/2017. Replaced by Net.DNS.ProcTaskFail.
</obsolete>
<owner>mgersh@chromium.org</owner>
<summary>
Duration of time taken in OS resolutions for actual navigations. Note that
......@@ -14708,21 +14735,33 @@ http://cs/file:chrome/histograms.xml - but prefer this file for new entries.
</histogram>
<histogram name="DNS.ResolveFail_FAMILY_IPV4" units="ms">
<obsolete>
Deprecated as of 9/2017. Replaced by Net.DNS.ProcTaskFail.
</obsolete>
<owner>mgersh@chromium.org</owner>
<summary>Same as DNS.ResolveFail, but limited to pure IPv4 lookups.</summary>
</histogram>
<histogram name="DNS.ResolveFail_FAMILY_IPV6" units="ms">
<obsolete>
Deprecated as of 9/2017. Replaced by Net.DNS.ProcTaskFail.
</obsolete>
<owner>mgersh@chromium.org</owner>
<summary>Same as DNS.ResolveFail, but limited to pure IPv6 lookups.</summary>
</histogram>
<histogram name="DNS.ResolveFail_FAMILY_UNSPEC" units="ms">
<obsolete>
Deprecated as of 9/2017. Replaced by Net.DNS.ProcTaskFail.
</obsolete>
<owner>mgersh@chromium.org</owner>
<summary>Same as DNS.ResolveFail, but limited to IPv4/IPv6 lookups.</summary>
</histogram>
<histogram name="DNS.ResolveSpeculativeFail" units="ms">
<obsolete>
Deprecated as of 9/2017. Replaced by Net.DNS.ProcTaskFail.
</obsolete>
<owner>mgersh@chromium.org</owner>
<summary>
Duration of time taken in speculative OS resolutions. Note that cached OS
......@@ -14731,6 +14770,9 @@ http://cs/file:chrome/histograms.xml - but prefer this file for new entries.
</histogram>
<histogram name="DNS.ResolveSpeculativeSuccess" units="ms">
<obsolete>
Deprecated as of 9/2017. Replaced by Net.DNS.ProcTaskSuccess.
</obsolete>
<owner>mgersh@chromium.org</owner>
<summary>
Duration of time taken in speculative OS resolution that succeeded. Note
......@@ -14739,6 +14781,9 @@ http://cs/file:chrome/histograms.xml - but prefer this file for new entries.
</histogram>
<histogram name="DNS.ResolveSuccess" units="ms">
<obsolete>
Deprecated as of 9/2017. Replaced by Net.DNS.ProcTaskSuccess.
</obsolete>
<owner>mgersh@chromium.org</owner>
<summary>
Duration of time taken in OS resolutions that succeeded and were requested
......@@ -14748,6 +14793,9 @@ http://cs/file:chrome/histograms.xml - but prefer this file for new entries.
</histogram>
<histogram name="DNS.ResolveSuccess_FAMILY_IPV4" units="ms">
<obsolete>
Deprecated as of 9/2017. Replaced by Net.DNS.ProcTaskSuccess.
</obsolete>
<owner>mgersh@chromium.org</owner>
<summary>
Same as DNS.ResolveSuccess, but limited to pure IPv4 lookups.
......@@ -14755,6 +14803,9 @@ http://cs/file:chrome/histograms.xml - but prefer this file for new entries.
</histogram>
<histogram name="DNS.ResolveSuccess_FAMILY_IPV6" units="ms">
<obsolete>
Deprecated as of 9/2017. Replaced by Net.DNS.ProcTaskSuccess.
</obsolete>
<owner>mgersh@chromium.org</owner>
<summary>
Same as DNS.ResolveSuccess, but limited to pure IPv6 lookups.
......@@ -14762,6 +14813,9 @@ http://cs/file:chrome/histograms.xml - but prefer this file for new entries.
</histogram>
<histogram name="DNS.ResolveSuccess_FAMILY_UNSPEC" units="ms">
<obsolete>
Deprecated as of 9/2017. Replaced by Net.DNS.ProcTaskSuccess.
</obsolete>
<owner>mgersh@chromium.org</owner>
<summary>
Same as DNS.ResolveSuccess, but limited to IPv4/IPv6 lookups.
......@@ -39593,6 +39647,29 @@ http://cs/file:chrome/histograms.xml - but prefer this file for new entries.
</summary>
</histogram>
<histogram name="Net.DNS.DnsTask.Errors" enum="NetErrorCodes">
<owner>mgersh@chromium.org</owner>
<summary>
Counts of specific error codes returned by DnsTask if a subsequent ProcTask
succeeded.
</summary>
</histogram>
<histogram name="Net.DNS.DnsTask.FailureTime" units="ms">
<owner>mgersh@chromium.org</owner>
<summary>
Duration of time taken by DnsTask in resolutions that failed. Excludes time
spent in the subsequent fallback.
</summary>
</histogram>
<histogram name="Net.DNS.DnsTask.SuccessTime" units="ms">
<owner>mgersh@chromium.org</owner>
<summary>
Duration of time taken by DnsTask in resolutions that succeeded.
</summary>
</histogram>
<histogram name="Net.DNS.JobQueueTime" units="ms">
<owner>mgersh@chromium.org</owner>
<summary>
......@@ -39610,6 +39687,48 @@ http://cs/file:chrome/histograms.xml - but prefer this file for new entries.
</summary>
</histogram>
<histogram name="Net.DNS.ProcTask.FailureTime" units="ms">
<owner>mgersh@chromium.org</owner>
<summary>
Duration of time taken by ProcTask in resolutions that failed.
</summary>
</histogram>
<histogram name="Net.DNS.ProcTask.SuccessTime" units="ms">
<owner>mgersh@chromium.org</owner>
<summary>
Duration of time taken by ProcTask in resolutions that succeeded.
</summary>
</histogram>
<histogram name="Net.DNS.ResolveCategory" enum="ResolutionCategory">
<owner>mgersh@chromium.org</owner>
<summary>
Whether a DNS resolution (single HostResolverImpl::Job) succeeded or failed,
and whether it was speculative.
</summary>
</histogram>
<histogram name="Net.DNS.ResolveFailureTime" units="ms">
<owner>mgersh@chromium.org</owner>
<summary>
Duration of time taken by HostResolverImpl::Job in resolutions that failed.
This is the time to resolve a hostname from start to finish. The main
histogram and by-priority versions exclude speculative requests, which are
recorded in the _speculative version.
</summary>
</histogram>
<histogram name="Net.DNS.ResolveSuccessTime" units="ms">
<owner>mgersh@chromium.org</owner>
<summary>
Duration of time taken by HostResolverImpl::Job in resolutions that
succeeded. This is the time to resolve a hostname from start to finish. The
main histogram and by-priority versions exclude speculative requests, which
are recorded in the _speculative version.
</summary>
</histogram>
<histogram name="Net.DNS.TotalTime" units="ms">
<owner>mgersh@chromium.org</owner>
<summary>
......@@ -98052,6 +98171,14 @@ http://cs/file:chrome/histograms.xml - but prefer this file for new entries.
<affected-histogram name="Net.BidirectionalStream.TimeToSendStart"/>
</histogram_suffixes>
<histogram_suffixes name="Net.DNS.AddressFamily" separator=".">
<suffix name="IPV4" label="Requests for ADDRESS_FAMILY_IPV4."/>
<suffix name="IPV6" label="Requests for ADDRESS_FAMILY_IPV6."/>
<suffix name="UNSPEC" label="Requests for ADDRESS_FAMILY_UNSPEC."/>
<affected-histogram name="Net.DNS.ResolveFailureTime"/>
<affected-histogram name="Net.DNS.ResolveSuccessTime"/>
</histogram_suffixes>
<histogram_suffixes name="Net.DNS.Priorities" separator=".">
<suffix name="THROTTLED" label="Jobs with priority THROTTLED."/>
<suffix name="IDLE" label="Jobs with priority IDLE."/>
......@@ -98065,6 +98192,8 @@ http://cs/file:chrome/histograms.xml - but prefer this file for new entries.
<histogram_suffixes name="Net.DNS.Speculative" separator=".">
<suffix name="Speculative" label="Speculative resolutions only."/>
<affected-histogram name="Net.DNS.ResolveFailureTime"/>
<affected-histogram name="Net.DNS.ResolveSuccessTime"/>
<affected-histogram name="Net.DNS.TotalTime"/>
<affected-histogram name="Net.DNS.TotalTimeNotCached"/>
</histogram_suffixes>
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment