Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(53)

Side by Side Diff: content/browser/service_worker/service_worker_metrics.cc

Issue 2218943002: Introduce ServiceWorker.EventDispatchingDelay UMA (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: diff from https://codereview.chromium.org/2249063004/#ps40001 Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/browser/service_worker/service_worker_metrics.h" 5 #include "content/browser/service_worker/service_worker_metrics.h"
6 6
7 #include <limits> 7 #include <limits>
8 #include <string> 8 #include <string>
9 9
10 #include "base/metrics/histogram_macros.h" 10 #include "base/metrics/histogram_macros.h"
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
103 return "_StartingWorker"; 103 return "_StartingWorker";
104 case EmbeddedWorkerStatus::RUNNING: 104 case EmbeddedWorkerStatus::RUNNING:
105 return "_RunningWorker"; 105 return "_RunningWorker";
106 case EmbeddedWorkerStatus::STOPPING: 106 case EmbeddedWorkerStatus::STOPPING:
107 return "_StoppingWorker"; 107 return "_StoppingWorker";
108 } 108 }
109 NOTREACHED(); 109 NOTREACHED();
110 return "_UNKNOWN"; 110 return "_UNKNOWN";
111 } 111 }
112 112
113 std::string GetSiteSuffix(ServiceWorkerMetrics::Site site) {
114 switch (site) {
115 case ServiceWorkerMetrics::Site::OTHER:
116 case ServiceWorkerMetrics::Site::WITH_FETCH_HANDLER:
117 case ServiceWorkerMetrics::Site::WITHOUT_FETCH_HANDLER:
118 return "";
119 case ServiceWorkerMetrics::Site::NEW_TAB_PAGE:
120 return ".ntp";
121 case ServiceWorkerMetrics::Site::PLUS:
122 return ".plus";
123 case ServiceWorkerMetrics::Site::INBOX:
124 return ".inbox";
125 case ServiceWorkerMetrics::Site::DOCS:
126 return ".docs";
127 case ServiceWorkerMetrics::Site::NUM_TYPES:
128 NOTREACHED() << static_cast<int>(site);
129 }
130 NOTREACHED();
131 return "";
132 }
133
113 // Use this for histograms with dynamically generated names, which 134 // Use this for histograms with dynamically generated names, which
114 // otherwise can't use the UMA_HISTOGRAM macro without code duplication. 135 // otherwise can't use the UMA_HISTOGRAM macro without code duplication.
115 void RecordSuffixedTimeHistogram(const std::string& name, 136 void RecordSuffixedTimeHistogram(const std::string& name,
116 const std::string& suffix, 137 const std::string& suffix,
117 base::TimeDelta sample) { 138 base::TimeDelta sample) {
118 const std::string name_with_suffix = name + suffix; 139 const std::string name_with_suffix = name + suffix;
140 // This unrolls UMA_HISTOGRAM_TIMES.
141 base::HistogramBase* histogram_pointer = base::Histogram::FactoryTimeGet(
142 name_with_suffix, base::TimeDelta::FromMilliseconds(1),
143 base::TimeDelta::FromSeconds(10), 50,
144 base::HistogramBase::kUmaTargetedHistogramFlag);
145 histogram_pointer->AddTime(sample);
146 }
147
148 // Use this for histograms with dynamically generated names, which
149 // otherwise can't use the UMA_MEDIUM_HISTOGRAM macro without code duplication.
150 void RecordSuffixedMediumTimeHistogram(const std::string& name,
151 const std::string& suffix,
152 base::TimeDelta sample) {
153 const std::string name_with_suffix = name + suffix;
119 // This unrolls UMA_HISTOGRAM_MEDIUM_TIMES. 154 // This unrolls UMA_HISTOGRAM_MEDIUM_TIMES.
120 base::HistogramBase* histogram_pointer = base::Histogram::FactoryTimeGet( 155 base::HistogramBase* histogram_pointer = base::Histogram::FactoryTimeGet(
121 name_with_suffix, base::TimeDelta::FromMilliseconds(10), 156 name_with_suffix, base::TimeDelta::FromMilliseconds(10),
122 base::TimeDelta::FromMinutes(3), 50, 157 base::TimeDelta::FromMinutes(3), 50,
123 base::HistogramBase::kUmaTargetedHistogramFlag); 158 base::HistogramBase::kUmaTargetedHistogramFlag);
124 histogram_pointer->AddTime(sample); 159 histogram_pointer->AddTime(sample);
125 } 160 }
126 161
127 // Use this for histograms with dynamically generated names, which 162 // Use this for histograms with dynamically generated names, which
128 // otherwise can't use the UMA_HISTOGRAM macro without code duplication. 163 // otherwise can't use the UMA_HISTOGRAM macro without code duplication.
(...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after
329 } 364 }
330 } 365 }
331 366
332 void ServiceWorkerMetrics::RecordStartWorkerTime(base::TimeDelta time, 367 void ServiceWorkerMetrics::RecordStartWorkerTime(base::TimeDelta time,
333 bool is_installed, 368 bool is_installed,
334 StartSituation start_situation, 369 StartSituation start_situation,
335 EventType purpose) { 370 EventType purpose) {
336 if (is_installed) { 371 if (is_installed) {
337 std::string name = "ServiceWorker.StartWorker.Time"; 372 std::string name = "ServiceWorker.StartWorker.Time";
338 UMA_HISTOGRAM_MEDIUM_TIMES(name, time); 373 UMA_HISTOGRAM_MEDIUM_TIMES(name, time);
339 RecordSuffixedTimeHistogram(name, StartSituationToSuffix(start_situation), 374 RecordSuffixedMediumTimeHistogram(
340 time); 375 name, StartSituationToSuffix(start_situation), time);
341 RecordSuffixedTimeHistogram( 376 RecordSuffixedMediumTimeHistogram(
342 "ServiceWorker.StartWorker.Time", 377 "ServiceWorker.StartWorker.Time",
343 StartSituationToSuffix(start_situation) + EventTypeToSuffix(purpose), 378 StartSituationToSuffix(start_situation) + EventTypeToSuffix(purpose),
344 time); 379 time);
345 } else { 380 } else {
346 UMA_HISTOGRAM_MEDIUM_TIMES("ServiceWorker.StartNewWorker.Time", time); 381 UMA_HISTOGRAM_MEDIUM_TIMES("ServiceWorker.StartNewWorker.Time", time);
347 } 382 }
348 } 383 }
349 384
350 void ServiceWorkerMetrics::RecordActivatedWorkerPreparationTimeForMainFrame( 385 void ServiceWorkerMetrics::RecordActivatedWorkerPreparationTimeForMainFrame(
351 base::TimeDelta time, 386 base::TimeDelta time,
352 EmbeddedWorkerStatus initial_worker_status, 387 EmbeddedWorkerStatus initial_worker_status,
353 StartSituation start_situation) { 388 StartSituation start_situation) {
354 std::string name = 389 std::string name =
355 "ServiceWorker.ActivatedWorkerPreparationForMainFrame.Time"; 390 "ServiceWorker.ActivatedWorkerPreparationForMainFrame.Time";
356 UMA_HISTOGRAM_MEDIUM_TIMES(name, time); 391 UMA_HISTOGRAM_MEDIUM_TIMES(name, time);
357 RecordSuffixedTimeHistogram( 392 RecordSuffixedMediumTimeHistogram(
358 name, GetWorkerPreparationSuffix(initial_worker_status, start_situation), 393 name, GetWorkerPreparationSuffix(initial_worker_status, start_situation),
359 time); 394 time);
360 } 395 }
361 396
362 void ServiceWorkerMetrics::RecordWorkerStopped(StopStatus status) { 397 void ServiceWorkerMetrics::RecordWorkerStopped(StopStatus status) {
363 UMA_HISTOGRAM_ENUMERATION("ServiceWorker.WorkerStopped", 398 UMA_HISTOGRAM_ENUMERATION("ServiceWorker.WorkerStopped",
364 static_cast<int>(status), 399 static_cast<int>(status),
365 static_cast<int>(StopStatus::NUM_TYPES)); 400 static_cast<int>(StopStatus::NUM_TYPES));
366 } 401 }
367 402
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
413 UMA_HISTOGRAM_ENUMERATION( 448 UMA_HISTOGRAM_ENUMERATION(
414 "ServiceWorker.EventHandledRatioType.ForeignFetch", type, 449 "ServiceWorker.EventHandledRatioType.ForeignFetch", type,
415 NUM_EVENT_HANDLED_RATIO_TYPE); 450 NUM_EVENT_HANDLED_RATIO_TYPE);
416 break; 451 break;
417 default: 452 default:
418 // Do nothing. 453 // Do nothing.
419 break; 454 break;
420 } 455 }
421 } 456 }
422 457
458 void ServiceWorkerMetrics::RecordFetchEventDispatchingDelay(
shimazu 2016/08/18 04:58:53 I think this could be open to other events. If do
horo 2016/08/22 14:57:35 Done.
459 base::TimeDelta time,
460 Site site_for_metrics) {
461 const std::string name = "ServiceWorker.FetchEvent.DispatchingDelay";
462 UMA_HISTOGRAM_TIMES(name, time);
463 const std::string site_suffix = GetSiteSuffix(site_for_metrics);
464 if (!site_suffix.empty())
465 RecordSuffixedTimeHistogram(name, site_suffix, time);
466 }
467
423 void ServiceWorkerMetrics::RecordNavigationHintPrecision( 468 void ServiceWorkerMetrics::RecordNavigationHintPrecision(
424 EventType start_worker_purpose, 469 EventType start_worker_purpose,
425 bool frame_fetch_event_fired) { 470 bool frame_fetch_event_fired) {
426 DCHECK(IsNavigationHintEvent(start_worker_purpose)); 471 DCHECK(IsNavigationHintEvent(start_worker_purpose));
427 UMA_HISTOGRAM_BOOLEAN("ServiceWorker.NavigationHintPrecision", 472 UMA_HISTOGRAM_BOOLEAN("ServiceWorker.NavigationHintPrecision",
428 frame_fetch_event_fired); 473 frame_fetch_event_fired);
429 switch (start_worker_purpose) { 474 switch (start_worker_purpose) {
430 case EventType::NAVIGATION_HINT_LINK_MOUSE_DOWN: 475 case EventType::NAVIGATION_HINT_LINK_MOUSE_DOWN:
431 UMA_HISTOGRAM_BOOLEAN( 476 UMA_HISTOGRAM_BOOLEAN(
432 "ServiceWorker.NavigationHintPrecision.LINK_MOUSE_DOWN", 477 "ServiceWorker.NavigationHintPrecision.LINK_MOUSE_DOWN",
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after
574 void ServiceWorkerMetrics::RecordProcessCreated(bool is_new_process) { 619 void ServiceWorkerMetrics::RecordProcessCreated(bool is_new_process) {
575 UMA_HISTOGRAM_BOOLEAN("EmbeddedWorkerInstance.ProcessCreated", 620 UMA_HISTOGRAM_BOOLEAN("EmbeddedWorkerInstance.ProcessCreated",
576 is_new_process); 621 is_new_process);
577 } 622 }
578 623
579 void ServiceWorkerMetrics::RecordTimeToSendStartWorker( 624 void ServiceWorkerMetrics::RecordTimeToSendStartWorker(
580 base::TimeDelta duration, 625 base::TimeDelta duration,
581 StartSituation situation) { 626 StartSituation situation) {
582 std::string name = "EmbeddedWorkerInstance.Start.TimeToSendStartWorker"; 627 std::string name = "EmbeddedWorkerInstance.Start.TimeToSendStartWorker";
583 UMA_HISTOGRAM_MEDIUM_TIMES(name, duration); 628 UMA_HISTOGRAM_MEDIUM_TIMES(name, duration);
584 RecordSuffixedTimeHistogram(name, StartSituationToSuffix(situation), 629 RecordSuffixedMediumTimeHistogram(name, StartSituationToSuffix(situation),
585 duration); 630 duration);
586 } 631 }
587 632
588 void ServiceWorkerMetrics::RecordTimeToURLJob(base::TimeDelta duration, 633 void ServiceWorkerMetrics::RecordTimeToURLJob(base::TimeDelta duration,
589 StartSituation situation) { 634 StartSituation situation) {
590 std::string name = "EmbeddedWorkerInstance.Start.TimeToURLJob"; 635 std::string name = "EmbeddedWorkerInstance.Start.TimeToURLJob";
591 UMA_HISTOGRAM_MEDIUM_TIMES(name, duration); 636 UMA_HISTOGRAM_MEDIUM_TIMES(name, duration);
592 RecordSuffixedTimeHistogram(name, StartSituationToSuffix(situation), 637 RecordSuffixedMediumTimeHistogram(name, StartSituationToSuffix(situation),
593 duration); 638 duration);
594 } 639 }
595 640
596 void ServiceWorkerMetrics::RecordTimeToLoad(base::TimeDelta duration, 641 void ServiceWorkerMetrics::RecordTimeToLoad(base::TimeDelta duration,
597 LoadSource source, 642 LoadSource source,
598 StartSituation situation) { 643 StartSituation situation) {
599 std::string name; 644 std::string name;
600 switch (source) { 645 switch (source) {
601 case LoadSource::NETWORK: 646 case LoadSource::NETWORK:
602 name = "EmbeddedWorkerInstance.Start.TimeToLoad.Network"; 647 name = "EmbeddedWorkerInstance.Start.TimeToLoad.Network";
603 UMA_HISTOGRAM_MEDIUM_TIMES(name, duration); 648 UMA_HISTOGRAM_MEDIUM_TIMES(name, duration);
604 RecordSuffixedTimeHistogram(name, StartSituationToSuffix(situation), 649 RecordSuffixedMediumTimeHistogram(name, StartSituationToSuffix(situation),
605 duration); 650 duration);
606 break; 651 break;
607 case LoadSource::HTTP_CACHE: 652 case LoadSource::HTTP_CACHE:
608 name = "EmbeddedWorkerInstance.Start.TimeToLoad.HttpCache"; 653 name = "EmbeddedWorkerInstance.Start.TimeToLoad.HttpCache";
609 UMA_HISTOGRAM_MEDIUM_TIMES(name, duration); 654 UMA_HISTOGRAM_MEDIUM_TIMES(name, duration);
610 RecordSuffixedTimeHistogram(name, StartSituationToSuffix(situation), 655 RecordSuffixedMediumTimeHistogram(name, StartSituationToSuffix(situation),
611 duration); 656 duration);
612 break; 657 break;
613 case LoadSource::SERVICE_WORKER_STORAGE: 658 case LoadSource::SERVICE_WORKER_STORAGE:
614 name = "EmbeddedWorkerInstance.Start.TimeToLoad.InstalledScript"; 659 name = "EmbeddedWorkerInstance.Start.TimeToLoad.InstalledScript";
615 UMA_HISTOGRAM_MEDIUM_TIMES(name, duration); 660 UMA_HISTOGRAM_MEDIUM_TIMES(name, duration);
616 RecordSuffixedTimeHistogram(name, StartSituationToSuffix(situation), 661 RecordSuffixedMediumTimeHistogram(name, StartSituationToSuffix(situation),
617 duration); 662 duration);
618 break; 663 break;
619 default: 664 default:
620 NOTREACHED() << static_cast<int>(source); 665 NOTREACHED() << static_cast<int>(source);
621 } 666 }
622 } 667 }
623 668
624 void ServiceWorkerMetrics::RecordTimeToStartThread(base::TimeDelta duration, 669 void ServiceWorkerMetrics::RecordTimeToStartThread(base::TimeDelta duration,
625 StartSituation situation) { 670 StartSituation situation) {
626 std::string name = "EmbeddedWorkerInstance.Start.TimeToStartThread"; 671 std::string name = "EmbeddedWorkerInstance.Start.TimeToStartThread";
627 UMA_HISTOGRAM_MEDIUM_TIMES(name, duration); 672 UMA_HISTOGRAM_MEDIUM_TIMES(name, duration);
628 RecordSuffixedTimeHistogram(name, StartSituationToSuffix(situation), 673 RecordSuffixedMediumTimeHistogram(name, StartSituationToSuffix(situation),
629 duration); 674 duration);
630 } 675 }
631 676
632 void ServiceWorkerMetrics::RecordTimeToEvaluateScript( 677 void ServiceWorkerMetrics::RecordTimeToEvaluateScript(
633 base::TimeDelta duration, 678 base::TimeDelta duration,
634 StartSituation situation) { 679 StartSituation situation) {
635 std::string name = "EmbeddedWorkerInstance.Start.TimeToEvaluateScript"; 680 std::string name = "EmbeddedWorkerInstance.Start.TimeToEvaluateScript";
636 UMA_HISTOGRAM_MEDIUM_TIMES(name, duration); 681 UMA_HISTOGRAM_MEDIUM_TIMES(name, duration);
637 RecordSuffixedTimeHistogram(name, StartSituationToSuffix(situation), 682 RecordSuffixedMediumTimeHistogram(name, StartSituationToSuffix(situation),
638 duration); 683 duration);
639 } 684 }
640 685
641 const char* ServiceWorkerMetrics::LoadSourceToString(LoadSource source) { 686 const char* ServiceWorkerMetrics::LoadSourceToString(LoadSource source) {
642 switch (source) { 687 switch (source) {
643 case LoadSource::NETWORK: 688 case LoadSource::NETWORK:
644 return "Network"; 689 return "Network";
645 case LoadSource::HTTP_CACHE: 690 case LoadSource::HTTP_CACHE:
646 return "HTTP cache"; 691 return "HTTP cache";
647 case LoadSource::SERVICE_WORKER_STORAGE: 692 case LoadSource::SERVICE_WORKER_STORAGE:
648 return "Service worker storage"; 693 return "Service worker storage";
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
680 } else if (failure_count == 2) { 725 } else if (failure_count == 2) {
681 UMA_HISTOGRAM_ENUMERATION("ServiceWorker.StartWorker.AfterFailureStreak_2", 726 UMA_HISTOGRAM_ENUMERATION("ServiceWorker.StartWorker.AfterFailureStreak_2",
682 status, SERVICE_WORKER_ERROR_MAX_VALUE); 727 status, SERVICE_WORKER_ERROR_MAX_VALUE);
683 } else if (failure_count == 3) { 728 } else if (failure_count == 3) {
684 UMA_HISTOGRAM_ENUMERATION("ServiceWorker.StartWorker.AfterFailureStreak_3", 729 UMA_HISTOGRAM_ENUMERATION("ServiceWorker.StartWorker.AfterFailureStreak_3",
685 status, SERVICE_WORKER_ERROR_MAX_VALUE); 730 status, SERVICE_WORKER_ERROR_MAX_VALUE);
686 } 731 }
687 } 732 }
688 733
689 } // namespace content 734 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698