summaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authorszym@chromium.org <szym@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-01-10 20:12:51 +0000
committerszym@chromium.org <szym@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-01-10 20:12:51 +0000
commit02cd6980fbc6180f5b87b97823a03be0df29b696 (patch)
tree373b2d5e1d895d1f442dcc1ee488a2bc6abd3dec /net
parent8c096e0a8e97626690858e375305b642d9e332e0 (diff)
downloadchromium_src-02cd6980fbc6180f5b87b97823a03be0df29b696.zip
chromium_src-02cd6980fbc6180f5b87b97823a03be0df29b696.tar.gz
chromium_src-02cd6980fbc6180f5b87b97823a03be0df29b696.tar.bz2
[net/dns] Add per-address-family histograms AsyncDNS.ResolveSuccess_FAMILY_* and per-qtype histograms AsyncDNS.TransactionSuccess_*.
Currently observed AsyncDNS.ResolveSuccess (duration of DnsTask) is almost twice as long as AsyncDNS.TransactionSuccess (duration of DnsTransaction). This could be attributed to dual-stack resolutions which involve two DnsTransactions, but at the same time the difference between DNS.ResolveSuccess_FAMILY_IPV4 and ..._UNSPEC (duration of ProcTask) is much less pronounced suggesting that SystemDNS resolves names on dual-stack hosts differently than AsyncDNS. This measurement will allow us to determine how much of the observed overhead of DnsTask over DnsTransaction can be attributed to dual-stack lookups. BUG=169257 Review URL: https://codereview.chromium.org/11783076 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@176137 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net')
-rw-r--r--net/base/host_resolver_impl.cc27
1 files changed, 23 insertions, 4 deletions
diff --git a/net/base/host_resolver_impl.cc b/net/base/host_resolver_impl.cc
index c54bf9da..0a3e864 100644
--- a/net/base/host_resolver_impl.cc
+++ b/net/base/host_resolver_impl.cc
@@ -1016,17 +1016,24 @@ class HostResolverImpl::DnsTask : public base::SupportsWeakPtr<DnsTask> {
int net_error,
const DnsResponse* response) {
DCHECK(transaction);
+ base::TimeDelta duration = base::TimeTicks::Now() - start_time;
// Run |callback_| last since the owning Job will then delete this DnsTask.
if (net_error != OK) {
- DNS_HISTOGRAM("AsyncDNS.TransactionFailure",
- base::TimeTicks::Now() - start_time);
+ DNS_HISTOGRAM("AsyncDNS.TransactionFailure", duration);
OnFailure(net_error, DnsResponse::DNS_PARSE_OK);
return;
}
CHECK(response);
- DNS_HISTOGRAM("AsyncDNS.TransactionSuccess",
- base::TimeTicks::Now() - start_time);
+ DNS_HISTOGRAM("AsyncDNS.TransactionSuccess", duration);
+ switch (transaction->GetType()) {
+ case dns_protocol::kTypeA:
+ DNS_HISTOGRAM("AsyncDNS.TransactionSuccess_A", duration);
+ break;
+ case dns_protocol::kTypeAAAA:
+ DNS_HISTOGRAM("AsyncDNS.TransactionSuccess_AAAA", duration);
+ break;
+ }
AddressList addr_list;
base::TimeDelta ttl;
DnsResponse::Result result = response->ParseToAddressList(&addr_list, &ttl);
@@ -1470,6 +1477,18 @@ class HostResolverImpl::Job : public PrioritizedDispatcher::Job {
return;
}
DNS_HISTOGRAM("AsyncDNS.ResolveSuccess", duration);
+ // Log DNS lookups based on |address_family|.
+ switch(key_.address_family) {
+ case ADDRESS_FAMILY_IPV4:
+ DNS_HISTOGRAM("AsyncDNS.ResolveSuccess_FAMILY_IPV4", duration);
+ break;
+ case ADDRESS_FAMILY_IPV6:
+ DNS_HISTOGRAM("AsyncDNS.ResolveSuccess_FAMILY_IPV6", duration);
+ break;
+ case ADDRESS_FAMILY_UNSPECIFIED:
+ DNS_HISTOGRAM("AsyncDNS.ResolveSuccess_FAMILY_UNSPEC", duration);
+ break;
+ }
UmaAsyncDnsResolveStatus(RESOLVE_STATUS_DNS_SUCCESS);
RecordTTL(ttl);