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

Unified Diff: chrome/browser/metrics/metrics_service.cc

Issue 9769011: Histogram times surrounding render crashes (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 8 years, 9 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/metrics/metrics_service.cc
===================================================================
--- chrome/browser/metrics/metrics_service.cc (revision 127735)
+++ chrome/browser/metrics/metrics_service.cc (working copy)
@@ -559,8 +559,7 @@
details).ptr();
content::RenderProcessHost* host =
content::Source<content::RenderProcessHost>(source).ptr();
- LogRendererCrash(
- host, process_details->status, process_details->was_alive);
+ LogRendererCrash(host, *process_details);
}
break;
@@ -1369,33 +1368,69 @@
}
void MetricsService::LogRendererCrash(content::RenderProcessHost* host,
rvargas (doing something else) 2012/03/22 01:59:32 same here
jar (doing other things) 2012/03/22 02:06:44 Done.
- base::TerminationStatus status,
- bool was_alive) {
+ const content::RenderProcessHost::RendererClosedDetails& details) {
Profile* profile = Profile::FromBrowserContext(host->GetBrowserContext());
ExtensionService* service = profile->GetExtensionService();
bool was_extension_process =
service && service->process_map()->Contains(host->GetID());
- if (status == base::TERMINATION_STATUS_PROCESS_CRASHED ||
- status == base::TERMINATION_STATUS_ABNORMAL_TERMINATION) {
- if (was_extension_process)
+ if (details.status == base::TERMINATION_STATUS_PROCESS_CRASHED ||
+ details.status == base::TERMINATION_STATUS_ABNORMAL_TERMINATION) {
+ if (was_extension_process) {
IncrementPrefValue(prefs::kStabilityExtensionRendererCrashCount);
- else
+ } else {
IncrementPrefValue(prefs::kStabilityRendererCrashCount);
+#if defined(OS_WIN)
+ if (details.have_process_times) {
+ if (details.status == base::TERMINATION_STATUS_PROCESS_CRASHED) {
+ UMA_HISTOGRAM_TIMES("BrowserRenderProcessHost.CrashedDuration",
+ details.run_duration);
+ UMA_HISTOGRAM_TIMES("BrowserRenderProcessHost.CrashedKernelTime",
+ details.kernel_duration);
+ UMA_HISTOGRAM_TIMES("BrowserRenderProcessHost.CrashedUserTime",
+ details.user_duration);
+ } else {
+ DCHECK(details.status ==
+ base::TERMINATION_STATUS_ABNORMAL_TERMINATION);
+ UMA_HISTOGRAM_TIMES("BrowserRenderProcessHost.AbnormalTermDuration",
+ details.run_duration);
+ UMA_HISTOGRAM_TIMES("BrowserRenderProcessHost.AbnormalTermKernelTime",
+ details.kernel_duration);
+ UMA_HISTOGRAM_TIMES("BrowserRenderProcessHost.AbnormalTermUserTime",
+ details.user_duration);
+ }
+ }
+#endif // OS_WIN
+ }
+
+ // TODO(jar): These histograms should be small enumerated histograms.
UMA_HISTOGRAM_PERCENTAGE("BrowserRenderProcessHost.ChildCrashes",
was_extension_process ? 2 : 1);
- if (was_alive) {
+ if (details.was_alive) {
UMA_HISTOGRAM_PERCENTAGE("BrowserRenderProcessHost.ChildCrashesWasAlive",
was_extension_process ? 2 : 1);
}
- } else if (status == base::TERMINATION_STATUS_PROCESS_WAS_KILLED) {
+ } else if (details.status == base::TERMINATION_STATUS_PROCESS_WAS_KILLED) {
UMA_HISTOGRAM_PERCENTAGE("BrowserRenderProcessHost.ChildKills",
was_extension_process ? 2 : 1);
- if (was_alive) {
+ if (details.was_alive) {
UMA_HISTOGRAM_PERCENTAGE("BrowserRenderProcessHost.ChildKillsWasAlive",
was_extension_process ? 2 : 1);
}
}
+
+#if defined(OS_WIN)
+ if (details.have_process_times && !was_extension_process &&
+ details.status != base::TERMINATION_STATUS_PROCESS_CRASHED &&
+ details.status != base::TERMINATION_STATUS_ABNORMAL_TERMINATION) {
+ UMA_HISTOGRAM_TIMES("BrowserRenderProcessHost.NormalTermDuration",
+ details.run_duration);
+ UMA_HISTOGRAM_TIMES("BrowserRenderProcessHost.NormalTermKernelTime",
+ details.kernel_duration);
+ UMA_HISTOGRAM_TIMES("BrowserRenderProcessHost.NormalTermUserTime",
+ details.user_duration);
+ }
+#endif // OS_WIN
}
void MetricsService::LogRendererHang() {

Powered by Google App Engine
This is Rietveld 408576698